少しダイナミックなアプローチでタワーディフェンスゲームを作成する予定です。赤色の領域は、プレイヤの塔載/戦略が大いに利用されます「キルゾーン」であろうタワーディフェンス:オーバーラップタワー範囲
:シナリオは、このです。
「アクティブなシールド・バフ」を持つ波のクリープがkillzoneに入ると、クリープが近くのクリープを防御するためのスキルを有効にします。
これを達成するのに役立つアルゴリズムはありますか?
少しダイナミックなアプローチでタワーディフェンスゲームを作成する予定です。赤色の領域は、プレイヤの塔載/戦略が大いに利用されます「キルゾーン」であろうタワーディフェンス:オーバーラップタワー範囲
:シナリオは、このです。
「アクティブなシールド・バフ」を持つ波のクリープがkillzoneに入ると、クリープが近くのクリープを防御するためのスキルを有効にします。
これを達成するのに役立つアルゴリズムはありますか?
このような状況では、これらのタワー(ターゲットタワーとエフェクトタワーの両方)のコライダーを作成すると思います。次に、クリープが同時にそれらのコライダーの領域内にあるとき。効果を有効にする必要があります。
クリープが各塔の半径の内側にあるかどうかだけを確認する必要があります。あなたは
function isInside(creep_pos, tower_pos, radius):
return pow(creep_pos.x - tower_pos.x, 2) + pow(creep_pos.y - tower_pos.y, 2) < radius*radius
(純粋にピタゴラスの定理)
によりさて、あなたは二つのタワー、Tower t1, t2
を持って言うことができますことを行います。クリープは、タワーの半径の両方の内部にある場合は、それをアクティブにする:
Tower t1, t2
Creep c
if (isInside(c.pos, t1.pos, t1.r) && isInside(c.pos, t2.pos, t2.r))
c.activeShield()
あなただけ&&
が一緒にそれらの多くを-ingことで、好きなだけ塔に対してチェックすることができます。