2012-05-01 17 views
1

Photoshop、壁とゲートの束を使って静的オブジェクトのセットを作成し、背景を透明にしました。 bunchOfWallsイメージは私のマップ(600x600x)と同じサイズです。Flixelをオーバーラップする際に透明な画像を無視する方法は?

私がFlxU.overlap(bunchOfWalls, myHero, heroHitWalls);を実行すると、イメージの透明領域で検出されたすべての衝突でトリガされるため、この機能はヒーローが行うすべての動きでトリガします。つまり、イメージレイヤーがマップレイヤーの上にあり、同じサイズ(600x600)のため、ヒーローは移動できません。

Flixelが私のbunchOfWallsイメージの透過領域を無視する方法はありますか?それとも、同じ効果を出す別の方法がありますか?

+0

IllustratorやFireworksのようなベクトルを与えるプログラムを使用してみませんか? –

答えて

3

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

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

1)透明性を持たない壁画に背景画像を分割します。その後、Flixelの衝突方法を引き続き使用することができます。

2)透明性を考慮したピクセル完全衝突方式を使用します。私はFlixel Power Toolsの大きなファンです - それは有用な機能の束を含むプラグインです、そのうちの1つは完全なピクセルの衝突です。それはあなたの場合には、それはおそらく次のようになり、使用するのはとても簡単です:

if (FlxCollision.pixelPerfectCheck(bunchOfWalls, myHero)) 
{ 
    heroHitWalls(); 
} 
+0

Flixelパワーツール、素晴らしい。 – Abdulaziz

0

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

関連する問題