2017-11-27 19 views
0

UnityのInput.accelerationコマンドに関する質問があります。 Vector3が1以上である場合Unity Accelerometer Documentation

public class ExampleClass : MonoBehaviour { 
    public float speed = 10.0F; 
    void Update() { 
     Vector3 dir = Vector3.zero; 
     dir.x = -Input.acceleration.y; 
     dir.z = Input.acceleration.x; 
     if (dir.sqrMagnitude > 1) 
      dir.Normalize(); 

     dir *= Time.deltaTime; 
     transform.Translate(dir * speed); 
    } 
} 

なぜそれがチェックしない:次のように

は、公式ドキュメントによると、基本的なコードはありますか? (dir.sqrMagnitude)に設定してから1? それは最適化ですか?

また、deltatimeを乗算する目的は何ですか?

ありがとうございました:)

答えて

0

を彼らは通常、1の方向の増分をロックしているあなたは、あなたが一方向に早くすることができますように行っている1時間-1 1.軸上を移動することができますし、 -1は、その軸上で反対方向にできるだけ速い。

フレームレートが一定でなくても、2回目の質問に時間のデルタタイムを掛けると、一定の移動速度が得られます。それはあなたの動きをより一貫させます。

あなたがスピードを上げるために何か画面に表示されるようにするには、Unityデザイン時のプロパティで一般公開されているはずです。 20速度は10速度よりもはるかに速くなるはずです。

このようにしている理由の例は、加速度が0.5であれば、フレーム上の動きが1/2になるということです。しかし、1でフルデルタ* 10を取得します。