塔防:重叠塔范围

时间:2016-11-23 10:32:03

标签: dynamic game-physics

我打算用一点动态的方法创造一个塔防游戏。场景是这样的:

enter image description here

红色区域将是“杀戮地带”,玩家的塔位/策略将大大利用。

我想要发生的事情是当一个拥有“主动盾牌buff”的波浪中的蠕动进入杀戮区时,蠕变会激活他的技能以保护附近的小兵。

是否有算法可以帮助我实现这一目标?

2 个答案:

答案 0 :(得分:0)

在这种情况下,我想我会为那些塔(目标塔和效果塔)创造对撞机。然后,当蠕变发生在那些碰撞者的身上时。区域在同一时间。效果应该被激活。

答案 1 :(得分:0)

您只需要检查蠕变是否在每个塔的半径范围内。你可以通过

来做到这一点
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()

您只需&&将更多塔楼放在一起,就可以根据需要检查任意数量的塔楼。