0

私は放射状の計算が苦手で、想像もつかないので確信が持てません。Math.atan2() の説明が必要です。

通常のタスク - マウスの後にオブジェクトを回転させること。違いを取得し、角度を取得し、テキスト領域に角度が表示され、オブジェクトがマウスに直接追従します。私が今必要としているのは、すべてがスムーズであることです。角度を 0 ~ 360 にする必要がありますが、180 度を超えるとオブジェクトの回転が -180 になり、逆方向にカウントされ、270 度を超えるとマウスの回転が -90 になり、0 までカウントされます。

さらに深く、スムーズな回転が必要です。これは、マウスの角度を最短で満たすために、フレームごとにたとえば 2 の設定速度を意味します。条件を設定する必要がありますが、これらの値の論理さえ理解していないため、それができません。それらはほぼランダムです!実行またはコピーする必要はありません。先に進むために理解する必要があるので、それがどのように機能し、何が間違っているかを説明していただければ...

コードは単純です: angle = Math.atan2(deltaY,deltaX)/(Math.PI/180) + 90; //+90 では、マウスを見ることができません// Object01.rotation = angle;

問題は、それがどのように機能するかさえわからないことです... 2つの値が異なる場合、オブジェクトはマウスを指すことができませんが、そうです。数字は嘘をつきます。これらの数字に基づいて何かが必要な場合、それは間違っています。非常に間違っています...整理が必要です。つまり、ミスフィットエンドの原因で上下にジャンプしないように、ローテーションに基づくさらなるコーディングの準備がすべて整っていることを意味します。

追加: それがどのように起こるかについての説明、私が上で説明したこと。なぜそのような価値観の混乱が生じたのでしょうか。そして、私が言ったように、それをさらにコーディングするためにどのように手配できるかについてのアドバイス。回転を射撃方向や照準速度などの重要なイベントの要素にしたい場合、アニメーションだけではうまくいきません。またはロックピックされたロックの速度回転の変化。または、まっすぐで明確な値を作成しないと機能しないはるかに複雑なもの: A から Z、1 から 10、2 から 3 の間に 8 がない、B の前に R がない、オブジェクトが直面しているときにマウス角度 270 がない -両方とも 0 から開始し、一緒に 180 に達したときは 90 です。ああ、私が言ったように、マウスの向きは機能しますが、特定の速度でマウスを最短距離で追いかけようとすると、オブジェクトが 4 つの四分の一すべてで間違った方向に変わります。私はそれを仮定します また、異なる四半期でデルタ値が負になるという問題があるこのアークタンゲンの問題についてもです。そして、それを変更すると、他の値がうまくいかなくなります...そのため、何が間違っているのか、それを修正する方法を知るために、自分が何をしているのかを正確に知る必要があります。そうそう。説明が必要です。お願いします。

Add2: angleZ = Math.atan2(oppSide,adjSide)/(Math.PI/180); そこで、ローテーションを 4 クォーターに分け、それぞれ atan を opp と数えます。調整する側。次に、それぞれ 90、180、および 270 を追加します。私のマウスの回転は 360 度ですが、単純な object.rotation = angleZ; をたどるオブジェクトです。それでも 180 になり、左側で -180 から 0 になります。単純なコマンドを無視するのはなぜですか? 回転は合っていますが、均等にする必要があります。驚くことではありません。なぜそれが起こっているのですか?アクションのベースとして別の数値と等しくなるように直接設定した数値が、同じローテーションでまったく異なる数値に変わるにはどうすればよいですか? それはそれが度であることさえ知りません!それは「object.rotation、私が選んだ数と同じにしてください!」と同じくらい簡単です。

4

2 に答える 2

0

座標系が違うだけです。x がステージの左側の 0 から始まり、+x で右に、-x で左に移動するように、オブジェクトの回転は 0° から上向きに始まり、時計回りに +180°、反時計回りに -180° 進みます。

Math.atan2 はたまたま左 (-x) を指す 0 から始まり、時計回りに +270°、反時計回りに -90° 進みます。これは面倒ですが、90° を追加して座標系間で変換する必要があることを意味します。

もちろん、何かを何度も回転させることができるので、361° は 1° と同じで、-270° は 90° と同じであるため、数値は常に同じ範囲内に収まるようにジャンプします。-180° から 180° の範囲外で回転するようにオブジェクトを指定すると、その値の範囲内で回転が正規化されます。

mitim が説明したように、回転をスムーズにアニメーション化するにはEvent.ENTER_FRAME、 、Timer、またはTweenLiteのようなトゥイーン ライブラリを使用する必要があります。ほとんどのトゥイーン ライブラリは最短の回転方向を計算できますが、それ以外の場合は単純に両方を計算して、どちらが小さいかを確認できます。

于 2013-02-13T13:43:38.470 に答える