Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我已经设置了左右角色的动画,我怎么能不同时设置左右站立的动画呢?_Python_Pygame - Fatal编程技术网

Python 我已经设置了左右角色的动画,我怎么能不同时设置左右站立的动画呢?

Python 我已经设置了左右角色的动画,我怎么能不同时设置左右站立的动画呢?,python,pygame,Python,Pygame,所以我给我的角色设置了动画,如果我向右,这个,如果我向左,这个,但是 当我不向右移动以blit我的右侧站立动画和左侧站立动画时,如何使其如此 我设法做到了我的右侧,但我不知道为什么我的左侧不工作 我的球员班 # player class class player: def __init__(self,x,y,height,width,color): self.x = x self.y = y self.color = color

所以我给我的角色设置了动画,如果我向右,这个,如果我向左,这个,但是 当我不向右移动以blit我的右侧站立动画和左侧站立动画时,如何使其如此

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

我的球员班

# 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绘制(自):
self.rect.topleft=(self.x,self.y)
如果self.direction==“right”:
image\u list=self.rights
elif self.direction==“standright”:
image\u list=self.standingright
elif self.direction==“left”:
image\u list=self.lefts
其他:
image\u list=self.standingleft
如果self.anim\u index>=len(图像列表):
self.anim_索引=0
玩家图片=图片列表[自我动画索引]
self.anim_索引+=1
无论如何,问题在于设置玩家方向的代码。注意:设置了方向
“left”
,但立即被
“standright”
覆盖:

keys=pygame.key.get_pressed()
如果键[pygame.K_左]:
playerman.direction=“左”
# [...]
playerman.direction=“站右”
如果按下一个键,则设置播放人方向,如果未按下任何键,则切换到“站立右侧”或“站立左侧”:

keys=pygame.key.get_pressed()
如果键[pygame.K_左]:
playerman.direction=“左”
# [...]
elif keys[pygame.K_RIGHT]:
playerman.direction=“右”
# [...]
其他:
如果playerman.direction==“left”:
playerman.direction=“站左”
其他:
playerman.direction=“站右”

该问题与此代码无关。你在哪里设置自我方向?在我的播放机上,左右键都在后面,很好,但idk为什么会发生这种情况,我要向左走,它的左边站着,而不是向左跑,我在胡闹,仍然无法修复@Habismail,因为你没有认真地看答案。如果键[pygame.K_左]:-
elif键[pygame.K_右]:
-
否则:
关注
elif
# 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