0

キャラクターが歩き回ったり、物を集めたり、敵を撃ったりする迷路ゲームを完成させました。ゲームは完全に動的に生成されます。私は今、キャラクターが特定の円の半径で彼の周りのものだけを見ることができる戦争の霧を追加したいと考えています. スプライト/ムービー クリップを使用して画像と背景画像を作成しました。

私の最初のアイデアは、マップ全体に 5*5 の黒い四角形を作成し、それらすべてにイベント リスナーを実行させて、ヒットしたかどうかを確認し、ヒットした場合はアルファを 0 に変更することでした。しかし、アクティブな EVENT が多すぎると、ゲームが停止する可能性があると思います。これを行うより良い方法はありますか?

ありがとう。

4

1 に答える 1

2

私が理解しているように、ミニマップに戦争の霧を作成する必要があるため、ヒーローは事前定義された半径の周りの敵などのみを見て、マップのその部分を訪れた場合は地形も見ることができます. このようなもの:

ここに画像の説明を入力

黄色の足がヒーローで、赤い点が敵です。マップの暗い部分はまだ訪れていません。

2 つのマスクを使用してこの効果を実現できます。1 つは地形の露出した部分をマスキングし、もう 1 つは地形と敵または他のオブジェクトのハイライトされた部分をマスキングします。したがって、レイヤー構造は次のようになります。

ここに画像の説明を入力

レイヤーを設定したら、単に呼び出すことができます

beginFill(0xFF0000); // any color will do
drawCircle(mHero.x, mHero.y, radius);
endFill();

暗い地形マスクのオブジェクトに対するメソッドgraphics(下のもの)。mHero は、ミニマップ上のヒーロー シンボルのインスタンス名です。

これは明らかにする部分のためです。ミニマップ上のヒーローの位置を強調表示するには、強調表示された地形マスクに対して同じことを行う必要がありますが、clear()古い円が保存されないように、描画呼び出しごとにメソッドを追加します。 . 強調表示された地形図のグラフィックス オブジェクトは次のようになります。

clear();
beginFill(0xFF0000); // any color will do
drawCircle(mHero.x, mHero.y, radius);
endFill();
于 2013-11-04T15:01:30.330 に答える