我的敌人有一个问题,当我的玩家向左滚动时,即使玩家Video仍在此位置以修复该敌人的滚动,我的完整代码仍在其下方以至于无法容纳
我想做的是让我的敌人在我的窗口滚动时保持其位置不变,因为左右滚动一直跟随玩家
while runninggame:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
runninggame = False
[...]
# I did the same for my players key movement this part suppose to not make my player scroll
if playerman.y < 250:
playerman.y += 1
for platform in platforms:
platform.y += playerman.speed
for enemys in enemying:
enemys.y += playerman.speed
我的敌人阶级
class enemy:
def __init__(self,x,y,height,width,end):
self.x = x
self.y =y
self.esright = [pygame.image.load("esright1.png"),
pygame.image.load("esright1.png"),
pygame.image.load("esright2.png"),
pygame.image.load("esright3.png"),
pygame.image.load("esright4.png"),
pygame.image.load("esright5.png"),
pygame.image.load("esright6.png"),
pygame.image.load("esright7.png"),
pygame.image.load("esright8.png"),
pygame.image.load("esright9.png"),
pygame.image.load("esright10.png"),
pygame.image.load("esright11.png"),
pygame.image.load("esright12.png"),
pygame.image.load("esright13.png"),
pygame.image.load("esright14.png"),
pygame.image.load("esright15.png"),
pygame.image.load("esright16.png"),
pygame.image.load("esright17.png"),
]
self.esleft = [pygame.image.load("esleft1.png"),
pygame.image.load("esleft1.png"),
pygame.image.load("esleft2.png"),
pygame.image.load("esleft3.png"),
pygame.image.load("esleft4.png"),
pygame.image.load("esleft5.png"),
pygame.image.load("esleft6.png"),
pygame.image.load("esleft7.png"),
pygame.image.load("esleft8.png"),
pygame.image.load("esleft9.png"),
pygame.image.load("esleft10.png"),
pygame.image.load("esleft11.png"),
pygame.image.load("esleft12.png"),
pygame.image.load("esleft13.png"),
pygame.image.load("esleft14.png"),
pygame.image.load("esleft15.png"),
pygame.image.load("esleft16.png"),
pygame.image.load("esleft17.png"),
]
self.esright = [pygame.transform.scale(image,(image.get_width()//3,image.get_height()//3)) for image in self.esright]
self.esleft = [pygame.transform.scale(image,(image.get_width()//3,image.get_height()//3)) for image in self.esleft]
self.height = height
self.width = width
self.anim_index = 0
self.distance = 80
self.speed = 8
self.vel = 3
self.path = [x,end]
self.walking_index = 0
self.rect = pygame.Rect(x,y,height,width)
def draw(self,window):
self.move()
if self.Walking_index + 1 >= 33:
self.Walking_index = 0
if self.vel > 0:
window.blit(self.esright[self.Walking_index//3], (self.x,self.y))
self.Walking_index += 1
else:
window.blit(self.esleft[self.Walking_index//3], (self.x,self.y))
self.Walking_index += 1
def move(self):
if self.vel > 0:
if self.x + self.vel < self.path[1]:
self.x += self.vel
else:
self.vel = self.vel * -1
self.Walking_index = 0
else:
if self.x - self.vel > self.path[0]:
self.x += self.vel
else:
self.vel = self.vel * -1
self.Walking_index = 0
我在哪里定义了敌人的阶级
black = (0,0,0)
enemys1 = enemy(550,436,50,50,300)
enemys = [enemys1]
我的完整代码已经很适合script
答案 0 :(得分:2)
滚动敌人的位置是不够的。敌人的路径受到间隔(self.path
的限制。当敌人的x坐标到达self.path[0]
或self.path[1]
时,敌人转身:
if self.vel > 0: if self.x + self.vel < self.path[1]: self.x += self.vel else: self.vel = self.vel * -1 self.Walking_index = 0 else: if self.x - self.vel > self.path[0]: self.x += self.vel else: self.vel = self.vel * -1 self.Walking_index = 0
如果您滚动敌人,那么您也必须滚动路径。
将方法scroll
添加到类enemys
中。更改位置以及路径的起点和终点:
class enemys:
# [...]
def scroll(self, sx, sy):
self.x += sx
self.y += sy
self.path[0] += sx
self.path[1] += sx
使用该方法滚动敌人:
runninggame = True
while runninggame:
# [...]
if playerman.y < 250:
playerman.y += 1
# [...]
for enemys in enemying:
enemys.scroll(0, playerman.speed)
if playerman.y > 450:
playerman.y -= playerman.fall
# [...]
for enemys in enemying:
enemys.scroll(0, -playerman.fall)
keys = pygame.key.get_pressed()
if keys[pygame.K_a]:
playerman.x -= playerman.speed
playerman.direction = "left"
# camera controll for left
if playerman.x < 100:
# [...]
for enemys in enemying:
enemys.scroll(playerman.speed, 0)
elif keys[pygame.K_d]:
playerman.x += playerman.speed
playerman.direction = "right"
# camera for right:
if playerman.x > 400:
playerman.x -= playerman.speed
# [...]
for enemys in enemying:
enemys.scroll(-playerman.speed, 0)