Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement 塔防-检查敌人的距离?_If Statement_Nested_Nested Loops - Fatal编程技术网

If statement 塔防-检查敌人的距离?

If statement 塔防-检查敌人的距离?,if-statement,nested,nested-loops,If Statement,Nested,Nested Loops,这个问题可能是嵌套for循环/if语句的重复,但请耐心听我说。我正在进行塔楼防御,我需要检查敌人是否在塔楼的射程之内。我可以做一些物理循环,但我觉得最好的方法是检查每个敌人的塔的距离,看看它是否在半径内。问题是,如果有500个“敌人”和30座塔楼,那就是每帧15000个if语句。这会是一个高性能的问题吗?我所知道的使这更容易的唯一方法是尝试以下方法: 仅每x帧检查一次(每秒执行if循环10次,而不是100次) 做一些猜测-附近的塔将使用与他们相同的塔 有没有其他方法可以做到这一点,或者我的情

这个问题可能是嵌套for循环/if语句的重复,但请耐心听我说。我正在进行塔楼防御,我需要检查敌人是否在塔楼的射程之内。我可以做一些物理循环,但我觉得最好的方法是检查每个敌人的塔的距离,看看它是否在半径内。问题是,如果有500个“敌人”和30座塔楼,那就是每帧15000个if语句。这会是一个高性能的问题吗?我所知道的使这更容易的唯一方法是尝试以下方法:

  • 仅每x帧检查一次(每秒执行if循环10次,而不是100次)
  • 做一些猜测-附近的塔将使用与他们相同的塔

有没有其他方法可以做到这一点,或者我的情况是否良好?

每次检查时,是否所有敌人都会移动?你可以在每次敌人移动时重新计算,哪些塔位于该特定敌人的半径范围内,然后只更新那些已经移动到敌人半径内或移动到敌人半径外的塔的敌人列表。您需要将每个敌人映射到一个塔列表,以及将每个塔映射到一个敌人列表。

每次检查时,是否所有敌人都会移动?你可以在每次敌人移动时重新计算,哪些塔位于该特定敌人的半径范围内,然后只更新那些已经移动到敌人半径内或移动到敌人半径外的塔的敌人列表。您需要将每个敌人映射到一个塔列表,以及将每个塔映射到一个敌人列表。

Unity难道没有内置碰撞检测功能吗?你试过整合它吗?与内置碰撞检测相比,分析结果是什么?为什么要自己检测碰撞?Unity没有内置碰撞检测功能吗?你试过整合它吗?与内置碰撞检测相比,分析结果是什么?为什么你想自己检测碰撞?Downvoter-请评论你为什么投了否决票,以便我可以在必要时改进我的答案,单独投否决票没有多大帮助。谢谢你的回复!因此,总之,在一个框架中进行那么多if语句是否会对性能造成影响?是的,通过这种方式可以删除许多不必要的语句。Downvoter-请评论您为什么投了否决票,以便我可以在必要时改进我的答案,仅投否决票没有多大帮助。感谢您的回复!总之,在一个帧中执行那么多if语句会不会对性能造成影响?是的,通过这种方式可以删除许多不必要的语句。