简短版本:我可以在Vector3.Lerp
中使用transform.Translate(new Vector3(-6,0));
(不计算机芯中的速度变量)吗?
我有一个非常简单的游戏,玩家可以从1个车道移动到另一个车道(最多3个车道(如Temple Run))。现在我的角色只是传送到其他车道,我希望Vector3.Lerp
让它变得更加流畅。我现在的问题是,我无法弄清楚如何将它实现到我的代码中。我不用速度变量计算我的运动,因为我的角色开始移动不均匀的距离,这是我不想要的。我有3个车道要搬到。
if (Input.GetKeyDown("a"))
{
// Do I need a speed variable here?
transform.Translate(new Vector3(-6, 0));
}
答案 0 :(得分:1)
如果代码不在Update()中,则可以使用StartCoroutine
if (Input.GetKeyDown("a")) {
changing = true;
StartCoroutine(ChangeLane(int n));
}
IEnumerator ChangeLane(int n) {
float changeProgress = 0f;
float changeDuration = 1f;
originPosition = tranform.position;
//the speed should be run speed
targetPosition = originPosition + new Vector3(n * lanWidth, speed * changeDuration);
while(changeProgress < changeDuration) {
tranform.position = Vector3.Lerp(originPosition, targetPosition, changeProgress / changeDuration);
changeProgress += Time.DeltaTime;
yield return 0;
}
tranform.position = targetPosition;
changing = false;
}
如果代码在Update()中,您也可以使用它,但在更改lane时,您不应该开始新的更改