- Home /
Rotating objects around player using lerp
I have 5 enemies surrounding the player. I want them to rotate around him in a circle. They are all prefabs with specific tags (kanaship1, kanaship2...)
This coroutine is what I have tried, I know its ugly and probably very inefficient but I had to start somewhere. What Im trying to do is to move ship1 to ship2's position and so on. Ship5 moves to ship1. It results in the enemies all moving towards the player in the middle in a cool spiral:
public IEnumerator rotateEnemiesCoroutine()
{
float t = 0f;
float t_speed = 1f;
int num_ships = 5;
sourceShip1 = GameObject.FindGameObjectWithTag ("kanaship1");
targetShip1 = GameObject.FindGameObjectWithTag ("kanaship2");
sourceShip2 = GameObject.FindGameObjectWithTag ("kanaship2");
targetShip2 = GameObject.FindGameObjectWithTag ("kanaship3");
sourceShip3 = GameObject.FindGameObjectWithTag ("kanaship3");
targetShip3 = GameObject.FindGameObjectWithTag ("kanaship4");
sourceShip4 = GameObject.FindGameObjectWithTag ("kanaship4");
targetShip4 = GameObject.FindGameObjectWithTag ("kanaship5");
sourceShip5 = GameObject.FindGameObjectWithTag ("kanaship5");
targetShip5 = GameObject.FindGameObjectWithTag ("kanaship1");
islerping = true;
float timestarted = Time.time;
while (islerping) {
float timeSinceStarted = Time.time - timestarted;
t = timeSinceStarted / t_speed;
sourceShip1.transform.position = Vector3.Lerp (sourceShip1.transform.position, targetShip1.transform.position, t);
sourceShip2.transform.position = Vector3.Lerp (sourceShip2.transform.position, targetShip2.transform.position, t);
sourceShip3.transform.position = Vector3.Lerp (sourceShip3.transform.position, targetShip3.transform.position, t);
sourceShip4.transform.position = Vector3.Lerp (sourceShip4.transform.position, targetShip4.transform.position, t);
sourceShip5.transform.position = Vector3.Lerp (sourceShip5.transform.position, targetShip5.transform.position, t);
if (t >= 1.0f) {
islerping = false;
}
yield return null;
}
}
Any ideas on how to approach this would be greatly appreciated.
Comment
Your answer
Follow this Question
Related Questions
Problem with Vector3.Lerp 1 Answer
Collision.contacts? 1 Answer
Stop a Lerp from looping 3 Answers
How to Gradually Increase Speed with Lerp or Slerp? 1 Answer
Return Camera Rotation Z axis to 0 2 Answers