【发布时间】:2019-01-10 16:36:10
【问题描述】:
我正在开发一个游戏,其中每个对象都应该检查它是否与任何其他对象发生碰撞。我有一个所有对象的列表和一个函数,它可以确定两个对象是否正在碰撞并破坏它们。我目前使用的方法效率很低。
for i in list1:
for j in list1:
if collide(i, j):
i.kill()
j.kill()
最初我在它们被杀死后从列表中删除了两个对象,但是发生了一些碰撞而没有检测到,所以我恢复到这段代码。它有效,但我想要更高效的东西。
【问题讨论】:
-
为什么不检查物品在移动时是否与任何东西发生碰撞?
-
你的对象是 pygame 中的精灵吗?如果是这样,则有更好的碰撞检测。请更具体地说明您使用的数据类型和环境。
-
@zacharybys 所有对象始终处于运动状态。该游戏涉及一个重力模型,其中小行星始终处于重力加速度下。
-
@RoryDaulton 它在 pygame 中,但是所有精灵都是圆形,因此内置的 rect 碰撞将不起作用。
标签: python python-3.x list for-loop