2016-12-06 7 views
0

を使用して、2Dオブジェクトが仮想ジョイスティックに建て使用して2Dトップダウンのオブジェクトを移動するための私のコードである回転:移動し、ここで仮想ジョイスティック

void Update() 
    { 
     Vector2 moveVec = new Vector2(CrossPlatformInputManager.GetAxis("Horizontal"), 
      CrossPlatformInputManager.GetAxis("Vertical")); 


     Vector3 lookVec = new Vector3(CrossPlatformInputManager.GetAxis("Horizontal"), 
      CrossPlatformInputManager.GetAxis("Vertical"), 4000); 

     transform.rotation = Quaternion.LookRotation(lookVec, Vector3.back); 
     transform.Translate(moveVec * Time.deltaTime * speed); 
    } 

回転コードがなければ、動きが追加した後に、完璧でした回転コードは動きがすべて乱れてしまった、方向が下がっている場合は上に移動します。 しかし、回転は正確にどのようにすべきかです。

答えて

0

transform.Translate(moveVec * Time.deltaTime * speed);行をtransform.Translate(moveVec * Time.deltaTime * speed, Space.World);に変更するだけです。デフォルトでは、変換は独自の変換空間(Space.Self)に対して行われます。

+0

これは完全にうまくいきますが、私は迷惑にならないようにしたいと思いますが、もっと説明し、「Space.World」を使用しない場合は、とても感謝します。 – Abdou023

+0

@ Abdou023それは状況によります...この場合、 'Transform.Translate' [documentation](https://docs.unity3d.com/ScriptReference/Transform.Translate.html)は翻訳が変換のローカル空間で行われます。これは、翻訳がオブジェクトの向きの影響を受けることを意味します。 ParticleSystemコンポーネントで同じタイプの動作を見つけることができます。シーンの周りを移動するフレームパーティクルジェネレータを使用すると、ワールド空間を使用するときに炎がまっすぐになり、ワールド空間を使用するときに曲がります。お役に立てれば :) – Kardux

関連する問題