iTween Switching Paths
I am making a racing game where players can race and switch between three lanes, side by side. I'm using iTween's PutOnPath and PointOnPath functions to travel down the paths. Every time I switch paths though, my game object instantaneously jumps from its current path onto the next path. Is there anyway to make a smooth animation for the object to travel from its current point on the current path to the next point on the next path?
Here is my code:
public class PlayerScript : MonoBehaviour {
public Transform[] leftPath;
public Transform[] midPath;
public Transform[] rightPath;
private Transform[] currentPath;
float percentsPerSecond = 0.1f; //10% of the path moved per second
float currentPathPercent = 0.0f; //min 0, max 1
bool onLeft = false;
bool onRight = false;
//Start is called at the execution of the game
void Start ()
{
//Initially, the player will start on the middle path
currentPath = midPath;
}
//Update is called once per frame
void Update () {
chooseLanes();
currentPathPercent += percentsPerSecond * Time.deltaTime;
iTween.PutOnPath(gameObject, currentPath, currentPathPercent);
this.transform.LookAt(iTween.PointOnPath(currentPath, currentPathPercent+0.001f));
if (currentPathPercent >= 1)
{
currentPathPercent = 0;
}
}
void LateUpdate()
{
}
//Draws iTween path in Scene Editor
void OnDrawGizmos()
{
//Visual. Not used in movement
iTween.DrawPath(midPath);
iTween.DrawPath(leftPath);
iTween.DrawPath(rightPath);
}
//Moves the car according to which button the player presses
void chooseLanes()
{
//If the player turns left, they'll enter the path to the left of them
if (Input.GetKeyDown(KeyCode.LeftArrow))
{
//The left path is to the left of the middle path
if (currentPath == midPath)
{
currentPath = leftPath;
}
//Nothing is to the left of the left path
else if (currentPath == leftPath)
{
}
//The middle path is to the left of the right path
else if (currentPath == rightPath)
{
currentPath = midPath;
}
else
{
Debug.Log("Current Path is Null");
}
}
//If the player turns right, they'll enter the path to the right of them
if (Input.GetKeyDown(KeyCode.RightArrow))
{
//The right path is to the right of the middle path
if (currentPath == midPath)
{
currentPath = rightPath;
}
//The middle path is to the right of the left path
else if (currentPath == leftPath)
{
currentPath = midPath;
}
//Nothing is to the right of the right path
else if (currentPath == rightPath)
{
}
else
{
Debug.Log("Current Path is Null");
}
}
}
}
Your answer
Follow this Question
Related Questions
How to change the speed of a runing iTween as I desired? 0 Answers
Strange Error with Itween PutOnPath 0 Answers
Screen flickers when iTween function gets executed. 0 Answers
Prefab Instantiation Issue or Perhaps iTween? 1 Answer
Itween Path change speed 0 Answers