v8 added walking and rotation at the same time :D

This commit is contained in:
2018-11-15 20:34:00 +01:00
parent f2b7d27911
commit 471f15c112
6 changed files with 182 additions and 2 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
+26 -2
View File
@@ -14098,7 +14098,7 @@ Transform:
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 94996747}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -20, y: -15, z: 11}
m_LocalPosition: {x: -20, y: -17, z: 11}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 379804153}
@@ -48707,6 +48707,7 @@ GameObject:
- component: {fileID: 311513962}
- component: {fileID: 311513963}
- component: {fileID: 311513964}
- component: {fileID: 311513965}
m_Layer: 0
m_Name: RotationControl
m_TagString: Untagged
@@ -48738,7 +48739,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 30ea8dc0510444c42ae4b4db1f5ee2bd, type: 3}
m_Name:
m_EditorClassIdentifier:
transformation: {x: 0, y: 2, z: 0}
transformation: {x: 0, y: 0, z: 0}
transformation2: {x: 0, y: 0, z: 0}
rotation: {x: 0, y: 0, z: 0, w: 0}
rotation2:
@@ -48793,6 +48794,29 @@ MonoBehaviour:
st: 5
speed2: 1
rotation: 5
--- !u!114 &311513965
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 311513960}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a4266f2a53eea3a43972b07e077212bc, type: 3}
m_Name:
m_EditorClassIdentifier:
legs:
- {fileID: 636309705}
- {fileID: 596626244}
- {fileID: 1619174560}
- {fileID: 1453644144}
- {fileID: 1772413224}
- {fileID: 210611261}
st: 5
speed2: 10
walkDirection: 0
centerRotation: 0
walkspeed: 0
--- !u!1 &311874317
GameObject:
m_ObjectHideFlags: 0
+143
View File
@@ -0,0 +1,143 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Walk3 : MonoBehaviour
{
public List<GameObject> legs = new List<GameObject>();
private List<Vector3> legsInitial = new List<Vector3>();
// Use this for initialization
void Start()
{
for (int index = 0; index < legs.Count; ++index)
{
legsInitial.Add(legs[index].GetComponent<Leg>().point);
step2.Add(0);
step6.Add(false);
//step3.Add(0);
//step4.Add(new Vector3(0, 0, 0));
step5.Add(new Vector3());
}
}
struct step
{
public Vector3 pos;
public float rotation;
public float height;
public bool inAir;
public step(Vector3 p, float r, float h, bool i)
{
pos = p;
rotation = r;
height = 0;
inAir = i;
}
}
// 1, 3, 5 -= 3
int offset(int i, int offset, int max)
{
return i - offset < 0 ? (max - (offset - i)) : i - offset;
}
step[] s = {
new step(new Vector3(-1, 0, 0), -1, 0, false),
new step(new Vector3(0, -2, 0), 0, -2, false),
new step(new Vector3(0, 0, 0), 0, 0, false), // rest
new step(new Vector3(1, 0, 0), 1, 0, false),
new step(new Vector3(1, 0, 0), 1, 0, false),
new step(new Vector3(0, 0, 0), 0, 0, false), // rest
new step(new Vector3(0, 2, 0), 0, 2, false),
new step(new Vector3(-1, 0, 0), -1, 0, true),
};
public int st = 5;
public int speed2 = 30;
int speed = 10;
public float walkDirection = 0;
public float centerRotation = 0;
int size = 8;
public float walkspeed = 1;
private List<float> step2 = new List<float>();
//private List<float> step3 = new List<float>();
//private List<Vector3> step4 = new List<Vector3>();
private List<Vector3> step5 = new List<Vector3>();
private List<bool> step6 = new List<bool>();
// Update is called once per frame
void FixedUpdate()
{
if (speed <= 0)
{
if (st >= size - 1)
st = 0;
else
st++;
for (int index = 0; index < legs.Count; ++index)
{
int t = st;
if (index == 1 || index == 3 || index == 5)
{
t = offset(st, 4, size);
}
if (s[t].inAir == false)
{
step2[index] = (centerRotation * s[t].rotation) / speed2;
Vector3 t2 = s[t].pos;
t2.x *= walkspeed;
// rotate x,y around rotation.
step5[index] = (Quaternion.Euler(0, walkDirection, 0) * t2) / speed2;
step6[index] = true;
}
else
{
Vector3 t2 = (legsInitial[index] + s[t].pos) - legs[index].GetComponent<Leg>().point;
step5[index] = t2 / speed2;
step6[index] = false;
}
}
speed = speed2;
}
else
{
speed--;
makestep();
}
}
void makestep()
{
for (int index = 0; index < legs.Count; ++index)
{
legs[index].GetComponent<Leg>().point += step5[index];
if (step6[index])
{
//legs[index].GetComponent<Leg>().point += step5[index];
// rotate x,y around rotation.
legs[index].GetComponent<Leg>().setWorldPos(
Quaternion.Euler(0, step2[index], 0) * legs[index].GetComponent<Leg>().getWorldPos()
);
}
}
}
}
+13
View File
@@ -0,0 +1,13 @@
fileFormatVersion: 2
guid: a4266f2a53eea3a43972b07e077212bc
timeCreated: 1542307321
licenseType: Free
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: