IEnumerator DragonMovement(int random, Vector3 target_offset, DirectionScript.GameObjectDirection new_dir) { for (int r = 0; r < random; r++) { UpdatePositionList(target_offset); DirectionScript GOD; for (int i = 0; i < dragonlist.Count; i++) { dragonlist[i].transform.position = Vector3.MoveTowards(dragonlist[i].transform.position, newpositions[i], 1f); yield return(null); if (r == 0) { GOD = dragonlist[i].GetComponent <DirectionScript>(); //turn the dragonhead and make a curve if (i == 0) { UpdateCloneList(); GOD.DragonSingleDirection(Sprite_dragon_head, new_dir); } else if (i == 1) { GOD.DragonCurveDirection(Sprite_dragoncurve, Sprite_dragoncurve_1, new_dir); } else if (i == dragonlist.Count - 1) { GOD.InheritDirectionandRotation(Sprite_dragontail, scaleclone[i - 1], eulerclone[i - 1], directionclone[i - 1]); } else { GOD.InheritDirectionandRotation(spriteclone[i - 1], scaleclone[i - 1], eulerclone[i - 1], directionclone[i - 1]); } } else { GOD = dragonlist[i].GetComponent <DirectionScript>(); if (i == 0) { GOD.DragonSingleDirection(Sprite_dragon_head, new_dir); } else if (i == 1) { UpdateCloneList(); GOD.DragonSingleDirection(Sprite_dragonbody, new_dir); } else if (i == dragonlist.Count - 1) { GOD.DragonSingleDirection(Sprite_dragontail, directionclone[i - 1]); } else { GOD.InheritDirectionandRotation(spriteclone[i - 1], scaleclone[i - 1], eulerclone[i - 1], directionclone[i - 1]); } } } } }
IEnumerator PositionUpdating() { while (true) { DirectionScript.GameObjectDirection next_dir = ChooseDirection(); int random; if (!isFed) { random = Random.Range(4, 10); } else { random = 100; } if (next_dir == DirectionScript.GameObjectDirection.Left || next_dir == DirectionScript.GameObjectDirection.Right) { int x = 0; x = next_dir == DirectionScript.GameObjectDirection.Left ? -1 : 1; target_offset = new Vector3(x * 1.0f, 0.0f, 0); } else { int x = 0; x = next_dir == DirectionScript.GameObjectDirection.Down ? -1 : 1; target_offset = new Vector3(0, x * 1.0f, 0); } yield return(StartCoroutine(DragonMovement(random, target_offset, next_dir))); gameObject.GetComponent <DirectionScript>().SetDirection(next_dir); yield return(new WaitForSeconds(0.65f)); } }