我打算用一点动态的方法创造一个塔防游戏。场景是这样的:
红色区域将是“杀戮地带”,玩家的塔位/策略将大大利用。
我想要发生的事情是当一个拥有“主动盾牌buff”的波浪中的蠕动进入杀戮区时,蠕变会激活他的技能以保护附近的小兵。
是否有算法可以帮助我实现这一目标?
答案 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()
您只需&&
将更多塔楼放在一起,就可以根据需要检查任意数量的塔楼。