0

落下物ゲームを作ろうとしています。ただし、このゲームのレベルを作成するのに苦労しています。シーンなどは変わりませんが、途中でもっと難しくしたいです。悪いアイテムと良いアイテムが落ちており、キャラクターは良いアイテムを食べ、悪いアイテムを避ける必要があります。

createItem 関数を使用してこれらの悪い項目と良い項目を作成し、この関数を 2 つの timer.performWithDelay で呼び出しています。ランダムにアイテムが落ちてきます。1 つは良いアイテム用で、もう 1 つは悪いアイテム用です。ただし、良品の下に不良品が入ってしまい、良品を捕まえられないこともある。どうすればそれを止めることができますか? これらのアイテムが互いに通過できるように衝突フィルターを追加したので、アイテムが重なり合っています。

2 つのタイマーを使用して createItem を呼び出す方法は次のとおりです。

 goodTimer = timer.performWithDelay(1000, function() createItem(goodItem[math.random(1,#goodItem)],1) end, 0 )

 badTimer = timer.performWithDelay(5000, function()  createItem(badItem[math.random(1,#badItem)],0) end, 0 )
4

1 に答える 1

0

決定論的な動作が必要な場合 (たとえば、常に適切なアイテムを取得するオプションがある場合)、ランダムなレイアウトを再定義して、どのような場合でもこの動作に影響を与えないようにする必要があります。あなたの説明から、あなたは衝突を考慮に入れているだけであり、純粋なランダム性の正確な修正を表していません。

この状況では、次のようにします。

  • 各アイテムの周囲に「セキュリティ エリア」を設定します。例: 指定されたアイテムの高さ/幅の 2 倍。
  • 各アイテムの生成が他の (既存の) アイテムに依存するようにします。たとえば、良いアイテムを作成する前に、アルゴリズムは、それを妨害する可能性のある既存の悪いアイテムが既に存在するかどうかを確認する必要があります。つまり、前述のセキュリティ エリアを考慮に入れることで、両方のアイテムが望ましくない状況になる可能性がある場合です。この分析は、現在の速度の下で対応するセキュリティ エリアの予想される衝突ポイントを計算することによって簡単に実行できます。衝突が発生する可能性があることが判明した場合、アイテムの生成が遅延するか、完全に無視されるか、そのタイプが変更される可能性があります (不良から良、またはその逆)。
  • 衝突ルールを設定しますが、ほとんどの状況が前述のポイントによって説明される限り、最も安全な側の事後修正として。
于 2013-07-26T11:29:46.383 に答える