我的敌人精灵在我的游戏移动相对缓慢。当我把速度提高到任何超过1的速度时,它们在左方向移动的非常快,在右方向移动的有点慢。有人知道这背后的原因吗?你知道吗
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
正如Jongware在评论中所说的,问题可能是两个
if
语句在对Enemy1Move
的同一个调用中都是真的。你知道吗假设
self.speed
是5,self.rect.x
是100,player.rect.x
是102。你知道吗现在
if self.rect.x < player.rect.x:
是真的,并且self.rect.x += self.speed
将self.rect.x
更改为105。你知道吗当函数仍在运行时,下一个
if
语句if self.rect.x > player.rect.x:
也是真的,并且self.rect.x -= self.speed
将self.rect.x
更改回100。你知道吗考虑使用
elif
:相关问题 更多 >
编程相关推荐