2

AS3 にスプライトを追加しただけです。

Sprite myspr = new Sprite();
myspr.addChild(mybitmap);
addChild(myspr);

次に、イベントを追加しました。マウスがスプライトの上にあるかどうかを確認するために、hitTestPoint を実行しました。

stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseCheck);

private function mouseCheck(evt:MouseEvent):void {
    var xx:int = stage.mouseX;
    var yy:int = stage.mouseY;
    
    if(myspr.hitTestPoint(xx, yy, true)) {
        ...
        // I'm checking mouse over here.
    }
    
    evt.updateAfterEvent();
}

問題は次のとおりです。マウスが完全な境界ボックスに来ると、hitTestPoint が true になります。ただし、マウスが透明な等尺性スプライトに来る場合にのみ true になります。

これに対する解決策はありますか、事前に感謝します。

4

2 に答える 2

0

私が通常ヒット テストを行う方法はいくつかあります。

1) 最も簡単な方法は、オンラインで見つけられる作成済みのクラスを使用することです。私よりずっと頭のいい人が、ピクセルからピクセルへのより優れた相互作用を可能にする複雑なクラスを作成しました。Parasがリストしたものはすべて良い. これらの問題は、新しいユーザーにとって、すべてのコードとそれらの実装方法を理解するのが難しい場合があることです。ただし、何が起こっているのかを理解すれば、通常は簡単です。ヒット テストをクラス ファイルに置き換えてから、正しい引数を入力するだけです。

2)別の方法は、実際にシンボルに入り、新しいレイヤーを作成してから、ヒットテストを機能させたい場所に長方形を描画します(アルファを0%に下げるだけです)。これはばかげた方法のように思えるかもしれません。しかし、実際には、予想よりもはるかにうまく機能します。ヒット テストを検出しているキャラクターの高さと幅よりもわずかに小さい正方形を描くだけで、準備完了です。インスタンス名 (ヒット スクエア) を付けてから、実際のスプライトの代わりにそのスクエアで hitTest を実行します。それは素晴らしく機能し、非常にシンプルなソリューションです。あなたが説明していることについては、これはうまくいかないように聞こえます。この方法は、よりゲーマーの観点からのものです。攻撃して敵にやられてる時は良さそうなんだけどなぁ… t 必ずしも正確です。また、これを 2 人のキャラクターで行う場合 (敵に大きな攻撃を当てる場合など) は、両方のスプライトのヒット ボックスを描画するだけです。これはおそらく、事前に作成されたピクセル パーフェクト ヒット検出テストを使用するよりも少し基本的ですが、非常にうまく機能し、数分しかかかりません。

于 2013-07-22T16:27:16.017 に答える