我正在尝试使用 Unity 制作 RTS 游戏。我目前有一个有效的攻击范围检查方法,可以通过
检查目标是否在攻击范围内if(target.colliderSize/2 + unit.attackRange >= Distance(unit, target))
如果目标有一个胶囊碰撞器,这意味着从它的中心到它的边缘的距离是相同的,那么这工作得很好,但是如果目标有一个盒子碰撞器(我的结构),从中心到边缘和角的距离是不一样的。该装置将避开结构的角落,因为该位置仍然超出范围。我正在考虑使用触发碰撞器来表示攻击范围,当它们碰撞时,它们就在范围内。这个方法有效吗?另外,既然是RTS游戏,单位数量就会很多,会不会严重影响性能?
老实说,你可以使用任何最适合碰撞检测的方法,在过去我如何处理碰撞(在我的例子中,它是在 VR 中造成近战伤害时针对敌人的),我使用过触发器/碰撞器等有各种不同的尺寸。
对于性能方面,至少从我的经验来看,碰撞和触发碰撞器不会触发每一帧,因此它们不会在这方面造成任何问题。如果您正在做的事情是一次性检查敌人或物体是否靠近单位,那么这应该不会太糟糕。如果您使用图层,您可以采取一些措施来减轻碰撞或触发,例如,让特定对象碰撞/触发将有助于减轻条件检查。