简而言之,是的.考虑一旦你将敌人与其他敌人进行比较,就不再需要进行比较了.您可以通过这种方式最小化检查次数
示例(伪代码):
for (int i=0; i < list.length; i++){
// compare list[i] to everything subsequent enemy
// we don't have to compare to enemies < i, because we've already
// compared those to all other enemies
for (int j=i+1; j < list.length; j++){
checkcollision(list[i], list[j])
}
}
Run Code Online (Sandbox Code Playgroud)
只是注意 - 不要试图从这些循环中的列表中删除敌人,因为你不想在迭代时改变列表的状态(foreach如果你试图修改列表,实际上会抛出异常而你正在迭代).相反,将其保存在另一个列表中或反向迭代.
| 归档时间: |
|
| 查看次数: |
784 次 |
| 最近记录: |