2017-08-08 22 views
3

私はジョイスティックで動くゲームオブジェクト(私のプレーヤー)を持っています。私のプレーヤーの下にある回転コードがうまく動かないと、ゲームオブジェクトの下に回転コードを置いた後、移動しようとすると常に360度回転します。ゲームオブジェクトを移動しようとすると、ゲームオブジェクトが常に回転するのを防ぐには

私の目的は、プレイヤーが回るときに特定の角度の周りにプレーヤーを回転させることです。

void Update() 
{ 
    // move 
    _rigidbody.MovePosition(transform.position + (transform.forward * leftController.GetTouchPosition.y * Time.deltaTime * speedMovements) + 
     (transform.right * leftController.GetTouchPosition.x * Time.deltaTime * speedMovements)); 

    //rotate 
    double rad = Mathf.Atan2(leftController.GetTouchPosition.y, leftController.GetTouchPosition.x); // In radians 
    double deg = rad * (180/System.Math.PI); 
    transform.RotateAround(transform.position, Vector3.up * Time.deltaTime, (float) deg); 
} 
+1

最後のコード行です。 これはもっとそうであってはいけませんか? – Thalthanas

+0

@EmreEよくちょっと良い。しかし今問題があるのは、例えばジョイスティックを左上の位置に置いたときに、プレイヤーがその位置に移動し、その間にすべてのフレームのために常に回転するということです。私が望むのは、私がポジションに垂直に歩いていることと、各角度に対して1回転しかないことです。私は移動すると360回転する... – KeyNavas

答えて

2

私が間違っている場合は私を修正しますが、あなたの質問が正しい場合は間違った機能を使用していると思います。私に

、RotateAroundは、例えば惑星の軌道のために良いだろうが(永久運動)

あなただけの所定の方向にプレーヤーを回転させ、それが行わだ時に停止したい場合は、代わりにこれらの機能を試してみてください。

  • Transform.LookAt
  • Quaternion.LookRotation
  • Quaternion.RotateTowards
  • Quaternion.Slerp
関連する問題