我正在制作塔防游戏,为了避免敌人相互穿越,我使用光线投射来确定他们之间的距离。目前,一切都很好,但我想让速度更快的敌人能够穿过速度较慢的敌人(所以只检查类似敌人的距离(。问题是,我的敌人类型比图层多,而且敌人都在同一条路径上(所以光线投射经常被错误的敌人拦截,然后停止。我想找到一种方法让它通过(。
情况示例:
敌方1--敌方2--敌方3-
enemy1发射一条射线来计算他和enemy3之间的距离,但该射线被enemy2拦截。
如果发射射线的敌人不是同一类型,我该如何让射线穿过敌人2?
我希望我的问题足够清楚,如果不是,请告诉我。提前谢谢。
对于2D物理学,Physics2D.Raycast
有多个重载,其中一些重载以RaycastHit2D
的数组或列表作为参数,函数会立即填充。
对于3D物理,Physics.RaycastAll
将返回一个RaycastHit
数组。请注意,此函数的结果不会按顺序排列,因此您可能希望按距射线原点的距离对结果列表进行排序。
事实上,仔细一看,还有一个我不知道的Physics2D.RaycastAll
。我一直在使用Physics2D.Raycast
的重载。你每天都学到一些新东西。