2016-08-29 4 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のx軸の2つのポイント間を移動したいと思っています。上記のコードでは、私はそれを達成することができますが、テレポートするだけです(コードの作り方を知っています)。私は移行が円滑になるようにしたい。どのように私はそれを達成することができる任意のアイデア?ポジション間でスムーズにプレーヤーを移動する方法は?

+0

時間の経過とともにLERPまたはSLERPを使用する必要があります。 –

+0

'Vector3.MoveTowards()'や 'Vector3.Lerp()を試すことができます。 –

+0

これはTweeningです。 – Krythic

答えて

0

私はそれを働かせることができました:) ここで正しいことはSLerpを使用することです。私はこのようにそれを使用する: -

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

は、最初のiは、POSの値でnewPosを複製した後newPosに(私の場合、所望の結果を得るために)だけx軸の値を変更しました。

関連する問題