1 回答

TA贡献1839条经验 获得超15个赞
关于滞后部分,有几件事:
正如@Kingsley 所提到的,你是双循环,对碰撞检查的数量进行平方
您正在检查不在屏幕上的对象
您在迭代对象时删除对象(可能解释了 -1-1-1)
试试这段代码。它移动得更快:
# LIVES AND SPIKE
lstdel = []
for i,spk in enumerate(spikes):
if spk.rect.left > 500 or spk.rect.left < 0: continue # off screen
if player1.rect.colliderect(spk.rect):
if deaths > 0:
deaths -= 1
talk = font.render("LIVES = "+str(deaths),True,(255,255,255))
talkRect.center = ((100,90))
lstdel.append(i)
for i in lstdel[::-1]:
del spikes[i] #delete from end
lstdel = []
for i,pk in enumerate(pikes):
if pk.rect.left > 500 or pk.rect.left < 0: continue # off screen
if player1.rect.colliderect(pk.rect):
if deaths > 0:
deaths -= 1
talk = font.render("LIVES = "+str(deaths),True,(255,255,255))
talkRect.center = ((100,90))
lstdel.append(i)
for i in lstdel[::-1]:
del pikes[i] #delete from end
lstdel = []
for i, lv in enumerate(lives):
if lv.rect.left > 500 or lv.rect.left < 0: continue # off screen
if player1.rect.colliderect(lv.rect):
if deaths > 0:
deaths += 1
talkRect.center = ((100,90))
lstdel.append(i)
for i in lstdel[::-1]:
del lives[i] #delete from end
添加回答
举报