I need to make a procedural jump in a board game in Unity C# (I conditionally have many points where the player has to jump from one to the other with different distances) which is called by the script. I cannot do animation because I need to calculate distance.
I've tried to use Vector3.Slerp
which is much modified but it does not work like I imagined at all.
(There I've made another Vector3
because I need another axis in the jump)
Ideas ran out.
Please tell me how can I fix a problem in the script above or how I can do procedural jump else. Thank you so much.
Your index
is always ever only to be 0
. And the code you do in LateUpdate
is fully redundant - simply assign the new position directly to transform.position
.
I think what you are trying to achieve is to move your object smooth through the various positions provided by stand
one by one.
So what you need is
and do this until you reach the very last one.
You could e.g. do this in a Coroutine like
public float moveSpeed;
public void StartMoveThroughWaypoints(IEnumerable<Vector3> waypoints)
{
StartCoroutine(MoveThroughWaypoints(waypoints));
}
private IEnumerator MoveThroughWaypoints(IEnumerable<Vector3> waypoints)
{
foreach(var waypoint in waypoints)
{
while(transform.position != waypoint)
{
transform.position = Vector3.MoveTowards(transform.position, waypoint, moveSpeed * Time.deltaTime);
yield return null;
}
// as the "==" above has only a precision of 1e-5
// ensure to end with a clean position
transform.position = waypoint;
// optional add delay to shortly hold on each waypoint
//yield return new WaitForSeconds(1f);
// or at least for one frame
yield return null;
}
}