Я пишу простой контроллер, позволяющий моему игроку перемещаться, прыгая вперед/назад/в сторону.
Я знаю, что могу легко переместить его, добавив Vector3, но я пытаюсь чтобы он плавно перемещался между начальной и конечной точкой движения. Я пытаюсь использовать Lerp здесь, но я с ним не знаком, и мне кажется, что я создаю бесконечный цикл при тестировании, поскольку Unity зависает, когда я пытаюсь перейти в режим игры, но я не могу понять решить проблему. Помогите!
private Rigidbody playerRb;
private CapsuleCollider playerColl;
private Vector3 startPos;
private Vector3 endPos;
[SerializeField] private float jumpSpeed = 1f;
private float startTime;
private float jumpLength;
private void Start()
{
playerRb = GetComponent();
playerColl = GetComponent();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.W))
{
startTime = Time.time;
startPos = playerRb.transform.position;
endPos = startPos + Vector3.forward;//move (0,0,1)
jumpLength = Vector3.Distance(startPos, endPos);
while(transform.position != endPos)
{
float distCovered = (Time.time - startTime) * jumpSpeed;
float fraction = distCovered / jumpLength;
playerRb.transform.position = Vector3.Lerp(startPos, endPos, fraction);
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/788 ... inite-loop
Прыжок вперед с помощью Lerp вызывает бесконечный цикл. ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение