2016-08-29 2 views
0
public float movespeed = 0.0f; 

private float x; 
private float y;  
private float z; 
private CharacterController controller; 
private Vector3 moveDirection; 

    void Update() { 

      Vector3 pos = GameObject.FindWithTag("Player").transform.position; 

      x = pos.x; 
      y = pos.y; 
      z = pos.z; 

      moveDirection = Vector3.zero; 

      if(Input.GetKey(KeyCode.A)) 
       transform.position = new Vector3(-1.3f, y, z); 
      else if(Input.GetKey(KeyCode.D)) 
       transform.position = new Vector3(1.3f, y, z); 

      //moveDirection.x = Input.GetAxis("Horizontal") * movespeed; 
      moveDirection.z = movespeed;  
      controller.Move (moveDirection * Time.deltaTime); 
     } 

Я хочу, чтобы мой игрок переместился между двумя точками оси х, которые равны -1.3 и 1.3, и с этим кодом выше я могу достичь этого, но он просто телепортируется (я знаю, что это код). Я хочу, чтобы переход был плавным. любые идеи, как я могу это достичь?Как плавно перемещать игрока между позициями?

+0

Вы должны использовать LERP или SLERP со временем –

+0

Вы можете попробовать 'Vector3.MoveTowards()' или, например, 'Vector3.Lerp(). –

+0

Термин для этого - Tweening. – Krythic

ответ

0

благодаря вышеприведенным комментариям я смог заставить его работать :) Правильная вещь здесь - использовать SLerp. я использовал это следующим образом: -

transform.position = Vector3.Slerp (pos, newPos, movespeed); 

первый я продублированы newPos со значениями поз, а затем изменили только значение по оси х (чтобы получить желаемый результат в моем случае) в newPos.

Смежные вопросы