0
我的游戏中的敌方精灵移动速度相对较慢。当我将速度提高到1以上的任何速度时,他们在左方向移动速度非常快,在正确方向移动速度非常慢。有没有人知道背后的原因?提高AI精灵的移动速度
class Enemy(pygame.sprite.Sprite):
def __init__(self,x,y,width = 60, height = 55):
pygame.sprite.Sprite.__init__(self)
self.x = x
self.y = y
self.speed = 1
self.s0 = pygame.image.load("Images/Enemy/s0.png")
s1 = pygame.image.load("Images/Enemy/s1.png")
s2 = pygame.image.load("Images/Enemy/s2.png")
s3 = pygame.image.load("Images/Enemy/s3.png")
rs0 = pygame.transform.flip(self.s0 ,True, False)
rs1 = pygame.transform.flip(s1 ,True, False)
rs2 = pygame.transform.flip(s2 ,True, False)
rs3 = pygame.transform.flip(s3 ,True, False)
self.attack = pygame.image.load("Images/Enemy/attack.png")
self.rattack = pygame.image.load("Images/Enemy/rotatedattack.png")
self.images = []
self.images.append(self.s0)
self.images.append(s1)
self.images.append(s2)
self.images.append(s3)
self.rotated_images = []
self.rotated_images.append(rs0)
self.rotated_images.append(rs1)
self.rotated_images.append(rs2)
self.rotated_images.append(rs3)
self.deadimages= [self.attack]
self.index = 0
self.TimeNum=0
self.TimeTarget=10
self.image = self.images[self.index]
self.rect = pygame.Rect(self.x,self.y,width,height)
self.playercollision = False
self.Timer = 0
def update(self,player):
if self.rect.colliderect(player.rect):
print("hey")
self.Timer += 1
if self.Timer >= 10:
if self.rect.x > player.rect.x:
self.image = self.attack
if self.rect.x < player.rect.x:
self.image = self.rattack
if player.rect.x == 0:
self.image = self.s0
def Enemy1Move(self,player):
if player.rect.x > 0 and player.rect.x < 655:
if self.rect.x < player.rect.x:
self.rect.x += self.speed
self.TimeNum+=1
if self.TimeNum == self.TimeTarget:
self.index +=1
if self.index >= len(self.rotated_images):
self.index = 0
self.image = self.rotated_images[self.index]
self.TimeNum = 0
if self.rect.x > player.rect.x:
self.rect.x -= self.speed
self.TimeNum +=1
if self.TimeNum == self.TimeTarget:
self.index +=1
if self.index >= len(self.images):
self.index = 0
self.image = self.images[self.index]
self.TimeNum = 0
更新敌方位置的代码中的两个条件都可以在同一个调用中使用。 – usr2564301
抱歉,我不明白你的意思? – Jim
代码看起来不错 - 也许是'print()'在代码中的许多地方的敌人位置,看看它是如何改变的。也许首先你增加速度到位置,但后来你从位置减去一些价值,敌人移动速度变慢。 – furas