0

横スクロールを作っていて、敵用にタレットを作っています。タレットをプレイヤーに向けさせようとしていますが、うまくいきません。以下は、私が達成したいことの大まかなスケッチです。

ここに画像の説明を入力

バレル (ダークブルー) がプレイヤーを指すように照準/回転するようにします。

シーンの YouTube ビデオをアップロードしました。

http://www.youtube.com/watch?v=eeP47VoX9uA&feature=youtu.be

これは私がこれまでに持っているものです(ループ):

function enterFrameHandler(e : Event) : void{
   _turretBarrel.rotation = Math.atan2(enTarget.x, enTarget.y) * 180/Math.PI;
}

これは、ジャンプするときにバレルを回転させるだけで、バレルはプレーヤーを狙っていません。また、タレットの反対側を歩いてもバレルの回転は変わりません。

私の enTarget.x は常にステージの中心にあり、シーン (タレットを含む) はプレイヤーの周りを左右に動きます (x)... enTarget.y だけが動きます (ジャンプ/高いプラットフォーム)。

私は Flash と ActionScript に少し慣れていません。誰かが私を助けてくれたり、正しい方向に向けてくれたりしたら、それは素晴らしいことです.

ありがとう

4

2 に答える 2

0

1) 正しい数値を取得し、アバターとタレットの位置が同じ座標空間にあることを確認します。それぞれの単純なトレースで十分です。この場合、両方のクリップのワールド (ステージに対する) 位置が必要になるでしょう。画面の左上隅 (0, 0) と比較して意味があることを確認してください。

2) _turretBarrel.rotation は -180 から 180 の範囲の回転であるため、角度を計算するときにこれを考慮する必要があることに注意してください。

3) 必要に応じて、対応する度/ラジアンを使用してください。

4) アバターにフォーカスを合わせ、ゲームを実行し、境界が正常に見えるかどうかを確認します。次に、砲塔で同じことを行います。

デバッグ目的での一般的なもう 1 つの利点は、ある種のデバッグ グラフィックをセットアップすることです。つまり、方向ベクトルと思われるものの線を引いて、数値と計算を検証します。

余談ですが、これがプログラミングの大部分です。デバッグ。確固たる事実だけを仮定し、デバッガーから数値を取得するか (おそらくより迅速に)、出力をトレースします。あなたがまだひどいフラッシュの専門的な IDE を使っているなら。FlashDevelop (無料) や Flash Builder (商用) などの適切なデバッガーを備えたものを入手することを強くお勧めします。

于 2012-03-16T20:55:46.667 に答える
0

オリバー、間違った角度 (プレーヤーと X 軸の間) の接線を計算しているようです。次のようなものが必要です。

function enterFrameHandler(e : Event) : void{
   _turretBarrel.rotation = Math.atan2(enTarget.x - barrel.x, enTarget.y - barrel.y) * 180/Math.PI;
}
于 2012-03-16T08:13:28.547 に答える