繁体   English   中英

我已经为左右角色设置了动画,我怎么能在不同时闪烁的情况下为我的左右站立设置动画?

[英]I have animated left and right character how could I animate my right and left standing without it blitting all at the same time?

所以我为我的角色设置了动画,如果我要右击这个,如果我要左击这个,但是当我不向右移动时,我怎么做呢?

我设法为我的右侧做到了,但我知道为什么我的左侧不工作VIDEO

    def draw(self):
        self.rect.topleft = (self.x,self.y)

        if self.direction == "left":
            self.clock.tick(self.fps)
            player_image = self.lefts[self.anim_index]
            self.anim_index += 1
            if self.anim_index == len(self.lefts):
                self.anim_index = 0
        elif self.direction != "left":
            player_image = self.standingleft[self.anim_index]
            self.anim_index += 1
            if self.anim_index == len(self.standingleft):
                self.anim_index = 0

        if self.direction == "right":
            player_image = self.rights[self.anim_index]
            self.anim_index += 1
            if self.anim_index == len(self.rights):
                self.anim_index = 0
        elif self.direction == "standright":
            player_image = self.standingright[self.anim_index]
            self.anim_index += 1
            if self.anim_index == len(self.standingright):
                self.anim_index = 0



我的播放器 class

# player class

class player:
    def __init__(self,x,y,height,width,color):
        self.x = x
        self.y = y
        self.color = color
        self.height  = height
        self.width = width
        self.speed = 5
        self.isJump = False
        self.JumpCount = 10
        self.fall = 0
        #hit box
        self.hitbox = (self.x + 20, self.y, 28, 60)
        self.stand = pygame.image.load("stands.png")
        self.rights = [pygame.image.load("L1.png"),
        pygame.image.load("L2.png"),
        pygame.image.load("L3.png"),
        pygame.image.load("L4.png"),
        pygame.image.load("L5.png"),
        pygame.image.load("L6.png"),
        pygame.image.load("L7.png"),
        pygame.image.load("L8.png"),
        pygame.image.load("L9.png"),
        pygame.image.load("L10.png"),
        pygame.image.load("L11.png"),
        pygame.image.load("L12.png"),
        pygame.image.load("L13.png"),
        pygame.image.load("L14.png"),
        pygame.image.load("L15.png")]
        self.fps = 50
        self.clock = pygame.time.Clock()
        self.lefts = [pygame.image.load("e1.png"),
        pygame.image.load("e2.png"),
        pygame.image.load("e3.png"),
        pygame.image.load("e4.png"),
        pygame.image.load("e5.png"),
        pygame.image.load("e6.png"),
        pygame.image.load("e7.png"),
        pygame.image.load("e8.png"),
        pygame.image.load("e9.png"),
        pygame.image.load("e10.png"),
        pygame.image.load("e11.png"),
        pygame.image.load("e12.png"),
        pygame.image.load("e13.png"),
        pygame.image.load("e14.png"),
        pygame.image.load("e15.png")]
        self.standingright = [pygame.image.load("d1.png"),
                pygame.image.load("d2.png"),
                pygame.image.load("d3.png"),
                pygame.image.load("d4.png"),
                pygame.image.load("d5.png"),
                pygame.image.load("d6.png"),
                pygame.image.load("d7.png"),
                pygame.image.load("d8.png"),
                pygame.image.load("d9.png"),
                pygame.image.load("d10.png"),
                pygame.image.load("d11.png"),
                pygame.image.load("d12.png"),
                pygame.image.load("d13.png"),
                pygame.image.load("d14.png"),
                pygame.image.load("d15.png")]
        self.standingleft =[pygame.image.load("s1.png"),
            pygame.image.load("s2.png"),
            pygame.image.load("s3.png"),
            pygame.image.load("s4.png"),
            pygame.image.load("s5.png"),
            pygame.image.load("s6.png"),
            pygame.image.load("s7.png"),
            pygame.image.load("s8.png"),
            pygame.image.load("s9.png"),
            pygame.image.load("s10.png"),
            pygame.image.load("s11.png"),
            pygame.image.load("s12.png"),
            pygame.image.load("s13.png"),
            pygame.image.load("s14.png"),
            pygame.image.load("s15.png")]
        self.rights = [pygame.transform.scale(image,(image.get_width()//5,image.get_height()//5)) for image in self.rights]
        self.lefts = [pygame.transform.scale(image,(image.get_width()//5,image.get_height()//5)) for image in self.lefts]
        self.standingright = [pygame.transform.scale(image,(image.get_width()//5,image.get_height()//5)) for image in self.standingright]
        self.standingleft = [pygame.transform.scale(image,(image.get_width()//5,image.get_height()//5)) for image in self.standingleft]
        self.bo_index = 0
        self.start_time = pygame.time.get_ticks()
        self.anim_fps = 400
        self.anim_index = 0
        self.stans_index = 0
        self.direction = "right"
        self.direction = "left"
        self.direction = "standright"

        self.rect = pygame.rect = pygame.Rect(self.x,self.y,width, height)
    def draw(self):
        self.rect.topleft = (self.x,self.y)

        if self.direction == "left":
            self.clock.tick(self.fps)
            player_image = self.lefts[self.anim_index]
            self.anim_index += 1
            if self.anim_index == len(self.lefts):
                self.anim_index = 0
        elif self.direction != "left":
            player_image = self.standingleft[self.anim_index]
            self.anim_index += 1
            if self.anim_index == len(self.standingleft):
                self.anim_index = 0

        if self.direction == "right":
            player_image = self.rights[self.anim_index]
            self.anim_index += 1
            if self.anim_index == len(self.rights):
                self.anim_index = 0
        elif self.direction == "standright":
            player_image = self.standingright[self.anim_index]
            self.anim_index += 1
            if self.anim_index == len(self.standingright):
                self.anim_index = 0


我建议实现一个if - elif - else语句并简化代码:

def draw(self):
    self.rect.topleft = (self.x,self.y)

    if self.direction == "right":
        image_list = self.rights
    elif self.direction == "standright":
        image_list = self.standingright
    elif self.direction == "left":
        image_list = self.lefts
    else:
        image_list = self.standingleft

    if self.anim_index >= len(image_list):
        self.anim_index = 0
    player_image = image_list[self.anim_index]
    self.anim_index += 1

无论如何,问题是设置playerman.direction的代码。 注意"left"方向已设置,但会立即被"standright"覆盖:

 keys = pygame.key.get_pressed() if keys[pygame.K_LEFT]: playerman.direction = "left" # [...] playerman.direction = "standright"

如果按下一个键,则设置playerman.direction ,如果没有按下任何键,则切换到"standright""standleft"

keys = pygame.key.get_pressed()

if keys[pygame.K_LEFT]:
    playerman.direction = "left"
    # [...]

elif keys[pygame.K_RIGHT]:
    playerman.direction = "right"
    # [...]

else:
    if playerman.direction == "left":
        playerman.direction = "standleft"
    else:
        playerman.direction = "standright"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM