1

Photoshop、壁とゲートの束を使用して静的オブジェクトのセットを作成し、背景を透明にしました。画像は私のbunchOfWalls地図と同じサイズ(600x600x)です。

したがって、私が行うFlxU.overlap(bunchOfWalls, myHero, heroHitWalls);と、この関数は、画像の透明な領域で検出されたすべての衝突でトリガーされるため、ヒーローが行うすべての動きでトリガーされます。つまり、画像レイヤーはマップレイヤー自体の上にあり、同じサイズ(両方とも600x600)であるため、ヒーローは移動できません。

FlixelにbunchOfWalls画像の透明な領域を無視させる方法はありますか、または同じ効果を行う別の方法はありますか?

4

2 に答える 2

3

各 Flx オブジェクトには境界ボックスがあります。これは、衝突を決定するために使用される長方形です。組み込みFlxG.collide()&FlxG.overlap()関数は、オブジェクトのバウンディング ボックスが交差しているかどうかのみをチェックします。透明度は考慮していません。

では、これをどのように修正しますか?あなたは出来る...

1) 背景画像を透明度のない壁のピースに分割します。その後、引き続き Flixel の衝突メソッドを使用できます。

2) 透過性を考慮したピクセル単位の衝突方法を使用します。私はFlixel Power Toolsの大ファンです。これは、ピクセル パーフェクト コリジョンなどの便利な機能を多数備えたプラグインです。使い方は本当に簡単です。あなたの場合、おそらく次のようになります。

if (FlxCollision.pixelPerfectCheck(bunchOfWalls, myHero))
{
    heroHitWalls();
}
于 2012-05-01T16:14:32.317 に答える
0

flixel を使用するもう 1 つの優れたオプションはFlxTilemap、単一の大きなスプライトではなく、壁に を作成することです。@WgFunstorm の最初の提案と同じ基本原則。壁をパーツに分割し、それらのパーツに基づいて衝突します。

于 2012-05-02T03:33:16.873 に答える