我正在进行2D游戏,敌人会向我的玩家开枪。有两种方法可以实现子弹碰撞:
问题是,哪种方法会有更好的表现(减少计算)?
答案 0 :(得分:3)
很快,方法1,没有做到这一点。
我假设你想要有很多玩家(比方说N)和许多子弹(让我们说M)。方法2需要测试所有子弹与所有玩家,这是执行你的距离测试N * M次。另一方面,您可以通过使用空间细分技术(仅针对'near'对象进行测试)来传递物理引擎将优化测试。
但请记住,使用正确的方法也取决于你的子弹的速度,而使用对撞机或检查距离是相当慢的子弹(即金属弹头子弹),你会遇到问题一个快速的子弹(即快速像真正的子弹),两个可能的解决方案是使用项目设置 - >物理,或只是做一个Physcis.Raycast()来获得te子弹立即影响的对象。 / p>
答案 1 :(得分:1)
为了回答你的问题,我想说的对手是更好的方法,物理检测比检查每个帧的距离碰撞更加优化。
但这也取决于要处理的对象数量,您可以使用分析器查看速度减慢的位置,并在必要时切换代码。
此文章也可能有所帮助:http://technology.blurst.com/unity-physics-trigger-collider-examples/
答案 2 :(得分:0)
根据我的经验,我会说检测对撞机更快更好,无论如何你使用统一物理并在你的脚本上添加对撞机方法不会降低性能