【发布时间】:2016-12-20 18:45:30
【问题描述】:
在我的游戏中,我有一群鱼 (10)。每条鱼都有一条视线(它们面前的一个弧形物体)。有鲨鱼,它们是掠食者(它们在房间里随机移动)。每条鱼在开始时都被分配了一个情报编号。当一条鲨鱼进入一条鱼的视线时,我希望这条鱼只有在它的智力值大于随机生成的数字的情况下才会改变它的方向(或者至少朝着最佳方向离开)。
问题是,当我尝试实现这一点并且鲨鱼进入鱼的视线时,pygame 不断检测到碰撞,因此 python 不断生成一个随机数。例如,一条鱼的智力水平可能很低,但仍然有很高的概率从鲨鱼那里逃脱,因为蟒蛇一直在检测碰撞,并且它有很多次尝试通过酒吧。例如,当鲨鱼在视线内时,我实际上希望鱼很可能不会改变方向。
理想情况下,我希望 python 检测一次碰撞,当然,如果鲨鱼再次穿过视线,则再次检测一次。
这是我的代码,不知道有多大帮助:
class RedFish(pygame.sprite.Sprite):
def __init__(self, newDNA):
pygame.sprite.Sprite.__init__(self)
self.direction = random.uniform(0, math.pi*2)
self.speed = 2
self.intelligence = 100
def update(self):
self.rect.x -= math.sin(self.direction) * self.speed
self.rect.y -= math.cos(self.direction) * self.speed
for shark in sharks:
if pygame.sprite.collide_mask(arcsList[self.arcIndex], shark):
temp = random.randrange(400)
if (temp < self.intelligence):
self.direction = self.direction*-1
谢谢!
【问题讨论】:
标签: python pygame sprite collision detection