0

マウスカーソルの動きに基づいてオブジェクトを回転させようとしています(バブルシューターゲームのバブルガンのように)。しかし、私は自分のスクリプトでそれを行う必要があります。

私のスクリプトは次のとおりです。

mouse_pos = Input.mousePosition;
Debug.Log(mouse_pos);
object_pos = Camera.main.WorldToScreenPoint(target.position);
mouse_pos.x = mouse_pos.x - object_pos.x;
mouse_pos.y = mouse_pos.y - object_pos.y;
angle = Mathf.Atan2(mouse_pos.y, mouse_pos.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0, 0,-angle);

動かないのと同じ位置だけを回転させます。これを解決するのを手伝ってください。または、良いチュートリアルを教えてください....

4

1 に答える 1

0

あなたの問題を正しく理解していれば、オブジェクトの変換はそのローカル原点を中心に回転しています。これが、正しい回転が表示されているのに変換が表示されていない理由です。

Unity は、スケール、平行移動、回転の順序で変換を適用します。

この問題を解決する最も簡単な方法は、オブジェクトのトランスフォームを別の親トランスフォームにペアレント化し、代わりに親トランスフォームを回転させることです (オブジェクトのトランスフォームに平行移動を適用します)。親トランスフォームの回転を継承するため、オブジェクトのトランスフォームのスケーリングまたはトランスレーションを変更する必要があることに注意してください。

それ以外の場合は、問題の詳細をお知らせください。

于 2013-09-14T00:06:11.963 に答える