2017-12-22 24 views
0

Unityでゲームを作成しようとしていますが、プレイヤーは向いている方向にしか動きませんが、次のコードでは4行き方。 (これは3Dプロジェクト用です)プレイヤーを1方向に動かす方法(Unity)

助けていただければ幸いです!ありがとう!

public class PlayerController : MonoBehaviour { 

    public float speed; 

    private Rigidbody rb; 

    void Start() { 
     rb = GetComponent<Rigidbody>(); 
    } 

    void FixedUpdate() { 
     float moveHorizontal = Input.GetAxis("Horizontal"); 
     float moveVertical = Input.GetAxis("Vertical"); 

     Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical); 

     rb.AddForce(movement * speed); 
    } 
} 
+0

これを達成するために何が試されましたか?あなたのコードは、文字通り、プレーヤーを水平方向および垂直方向に移動させることができます。あなたが掲示したコードを理解し、次にあなたが望むものを達成する方法を理解するでしょう。 –

答えて

0

あなたが投稿したコードから、私はあなたがプレーヤーの向いている方向をどこに格納しているのかわかりません。しかし、私はそれがQuaternionとして格納されていると推測します。ゲームは一人称である場合には、ショートカットを取ることができ、ちょうどnormalの代わりにCamera.current.transform.forwardを使用

Vector3 input = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); 
Vector3 normal = playerRotation * Vector3.forward; 
Vector3 movement = Vector3.Dot(normal, input) * input; 

: - あなたはプレーヤーの回転クォータニオンはplayerRotationと呼ばれている場合は、この(未テスト警告)を行うことができますベクター。

これは、プレイヤーが向いている方向で入力方向を法線に投影します。これにより、あなたの移動力はその方向のみになることができます。

関連する問題