diff --git a/2018-unity-sim/.vs/Hexapod/v15/Server/sqlite3/storage.ide b/2018-unity-sim/.vs/Hexapod/v15/Server/sqlite3/storage.ide index 46c9d53..00c7ff4 100644 --- a/2018-unity-sim/.vs/Hexapod/v15/Server/sqlite3/storage.ide +++ b/2018-unity-sim/.vs/Hexapod/v15/Server/sqlite3/storage.ide @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b7e84c2cc41a9930869a3ce7f30c1576199c4ea5b992dc992639be222c5b5f0d +oid sha256:f8cb9e49b8fed01a468f7fcfd52da0ca8fb2038c930699ddf498320099d1918e size 1032192 diff --git a/2018-unity-sim/.vs/Hexapod/v15/Server/sqlite3/storage.ide-shm b/2018-unity-sim/.vs/Hexapod/v15/Server/sqlite3/storage.ide-shm index edc8ac8..3b916d2 100644 --- a/2018-unity-sim/.vs/Hexapod/v15/Server/sqlite3/storage.ide-shm +++ b/2018-unity-sim/.vs/Hexapod/v15/Server/sqlite3/storage.ide-shm @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f442027f263d76b460d56701cb0ed83c0d692eb0bc16595a9a6478c2465709e6 +oid sha256:a6c0d92ca18a8e9362306b1b98d3dee3437273fd783dba80869b1ce80456a3b8 size 32768 diff --git a/2018-unity-sim/.vs/Hexapod/v15/Server/sqlite3/storage.ide-wal b/2018-unity-sim/.vs/Hexapod/v15/Server/sqlite3/storage.ide-wal index abfae42..81a3187 100644 --- a/2018-unity-sim/.vs/Hexapod/v15/Server/sqlite3/storage.ide-wal +++ b/2018-unity-sim/.vs/Hexapod/v15/Server/sqlite3/storage.ide-wal @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:044f7f16abf42991f6623612ca4708a352f354f41deb9d22b2de3affd0d3ae5e +oid sha256:a302143b127e34fb309f81ce66bb25954c314519c1950162d0ff74dbc3191722 size 4140632 diff --git a/2018-unity-sim/Assets/Leg.cs b/2018-unity-sim/Assets/Leg.cs index e6b4d47..a9095e3 100644 --- a/2018-unity-sim/Assets/Leg.cs +++ b/2018-unity-sim/Assets/Leg.cs @@ -99,6 +99,11 @@ public class Leg : MonoBehaviour { pointShouldBe.transform.localPosition = foot.pos; } + public Vector3 getLocalPos() + { + return point; + } + public Vector3 getWorldPos() { return point + new Vector3((float)translateX, (float)translateY, (float)translateZ); diff --git a/2018-unity-sim/Assets/Main.unity b/2018-unity-sim/Assets/Main.unity index 0e3c910..046c363 100644 --- a/2018-unity-sim/Assets/Main.unity +++ b/2018-unity-sim/Assets/Main.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:741511ef61d3583727616b9883e21b71227cb8818b2941ef71c600f2241cbcdd -size 9969790 +oid sha256:41ef2a8cdbb19d72f4ec38634d7892f2b1b014ede4fd18ef191cb42d54bf3be7 +size 9972160 diff --git a/2018-unity-sim/Assets/Walk3.cs b/2018-unity-sim/Assets/Walk3.cs index b6c43fc..604f57c 100644 --- a/2018-unity-sim/Assets/Walk3.cs +++ b/2018-unity-sim/Assets/Walk3.cs @@ -18,6 +18,9 @@ public class Walk3 : MonoBehaviour //step3.Add(0); //step4.Add(new Vector3(0, 0, 0)); step5.Add(new Vector3()); + + freeze.Add(false); + freeze_y.Add(false); } } @@ -27,13 +30,15 @@ public class Walk3 : MonoBehaviour public float rotation; public float height; public bool inAir; + public bool inRest; - public step(Vector3 p, float r, float h, bool i) + public step(Vector3 p, float r, float h, bool i, bool ir) { pos = p; rotation = r; height = 0; inAir = i; + inRest = ir; } } @@ -45,19 +50,19 @@ public class Walk3 : MonoBehaviour } step[] s = { - new step(new Vector3(-1, 0, 0), -1, 0, false), + new step(new Vector3(-1, 0, 0), -1, 0, false, false), - new step(new Vector3(0, -2, 0), 0, -2, false), + new step(new Vector3(0, -2, 0), 0, 0, false, false), - new step(new Vector3(0, 0, 0), 0, 0, false), // rest + new step(new Vector3(0, 0, 0), 0, 0, false, 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(1, 0, 0), 1, 0, false, true), // down middle + new step(new Vector3(1, 0, 0), 1, 0, false, false), - new step(new Vector3(0, 0, 0), 0, 0, false), // rest + new step(new Vector3(0, 0, 0), 0, 0, false, false), // rest - new step(new Vector3(0, 2, 0), 0, 2, false), - new step(new Vector3(-1, 0, 0), -1, 0, true), + new step(new Vector3(0, 2, 0), 0, 0, false, false), + new step(new Vector3(-1, 0, 0), -1, 0, true, false), }; public int st = 5; @@ -77,16 +82,57 @@ public class Walk3 : MonoBehaviour private List step5 = new List(); private List step6 = new List(); + private List freeze = new List(); + private List freeze_y = new List(); + // Update is called once per frame void FixedUpdate() { if (speed <= 0) { - if (st >= size - 1) + if (st >= size-1) st = 0; else + { st++; + if (centerRotation == 0 && walkspeed == 0) + { + 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].inRest) + { + Vector3 lp = legs[index].GetComponent().getLocalPos();// + s[t].pos; + //lp.y -= 2; + if ((Mathf.Abs(lp.y - (legsInitial[index].y-2)) < 0.0001f) + && (Mathf.Abs(lp.z - legsInitial[index].z) < 0.0001f) + && (Mathf.Abs(lp.x - legsInitial[index].x) < 1.0001f)) + { + freeze[index] = true; + freeze_y[index] = true; + } + } + /*else + { + freeze[index] = false; + }*/ + } + } + else + { + for (int index = 0; index < legs.Count; index++) + { + freeze[index] = false; + } + } + } + for (int index = 0; index < legs.Count; ++index) { int t = st; @@ -95,22 +141,35 @@ public class Walk3 : MonoBehaviour t = offset(st, 4, size); } - if (s[t].inAir == false) + if (!freeze[index]) { - step2[index] = (centerRotation * s[t].rotation) / speed2; + 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; + Vector3 t2 = s[t].pos; + t2.x *= walkspeed; + // rotate x,y around rotation. + if (freeze_y[index]) + { + t2.y = 0; + } + step5[index] = (Quaternion.Euler(0, walkDirection, 0) * t2) / speed2; - step6[index] = true; + step6[index] = true; + } + else + { + Vector3 t2 = (legsInitial[index] + s[t].pos) - legs[index].GetComponent().point; + step5[index] = t2 / speed2; + + step6[index] = false; + freeze_y[index] = false; + } } else { - Vector3 t2 = (legsInitial[index] + s[t].pos) - legs[index].GetComponent().point; - step5[index] = t2 / speed2; - + step5[index] = new Vector3(0, 0, 0); step6[index] = false; } }