如何将我的图像列表放入 Hitbox 中?

好的所以我发现我的碰撞是基于这个方块并且它没有与我的图像发生碰撞因为我的图像不在方块内或者你可以称之为碰撞箱它有没有办法将我的玩家放在碰撞箱内所以它可以很好地工作

这是我的玩家类我的游戏视频我知道这个问题,但我只是不知道如何在不移动碰撞箱的情况下移动我的播放器,这样我就可以很好地碰撞

class player:

    def __init__(self,x,y,height,width,color):

        self.x = x

        self.y = y

        self.height  = height

        self.width = width

        self.speed = 5

        self.isJump = False

        self.JumpCount = 10

        self.fall = 0

        self.stand = pygame.image.load("stands.png")

        self.lefts = [

        pygame.image.load("Sprite-0001.png"),

        pygame.image.load("Sprite-0002.png"),

        pygame.image.load("Sprite-0003.png"),

        pygame.image.load("Sprite-0004.png"),

        pygame.image.load("Sprite-0005.png"),

        pygame.image.load("Sprite-0006.png"),

        pygame.image.load("Sprite-0007.png"),

        pygame.image.load("Sprite-0008.png"),

        pygame.image.load("Sprite-0009.png")

         ]

        self.rights = [

        pygame.image.load("Sprite-50.png"),

         pygame.image.load("Sprite-51.png"),

         pygame.image.load("Sprite-52.png"),

         pygame.image.load("Sprite-53.png"),

         pygame.image.load("Sprite-54.png"),

         pygame.image.load("Sprite-55.png"),

         pygame.image.load("Sprite-56.png"),

         pygame.image.load("Sprite-57.png"),

         pygame.image.load("Sprite-58.png")

         ]

        self.rights = [pygame.transform.scale(image,(image.get_width()*4,image.get_height()*4)) for image in self.rights]

        self.lefts = [pygame.transform.scale(image,(image.get_width()*4,image.get_height()*4)) for image in self.lefts]

        self.stand = pygame.transform.scale(self.stand,(self.stand.get_width()*4,self.stand.get_height()*4))

        self.bo_index = 0

        self.anim_index = 0

        self.stans_index = 0

        self.direction = "right"

        self.direction = "left"

        self.direction = "standing"

        self.rect = pygame.rect = pygame.Rect(self.x,self.y,width, height)


九州编程
浏览 49回答 1
1回答

POPMUISE

class enemy:   def __init__(self,x,y,height,width,color):       self.x = x       self.y = y       self.height = height       self.platforms = pygame.image.load("level5.png") #get the image so can find width       self.platforms = pygame.transform.scale(self.platforms,(self.platforms.get_width()*5,self.platforms.get_height()*5))       self.width = self.platforms.get_width() #get the width of the image       self.color = color       self.rect = pygame.Rect(x,y,height,width)       self.anim_index = 0       self.rect = self.platforms.get_rect(topleft = (self.x, self.y))        self.rect = pygame.Rect(x,y, self.platforms.get_width(), self.platforms.get_height())图像和碰撞箱(你可以站立的部分)是两种不同的尺寸,你希望它们是一样的。所以不是给平台宽度。计算图像的宽度,以便您知道它们的大小相同如果pygame.draw.rect(window, (0,0,0), self.rect)在 enemy 的 draw 方法中添加一个,那么你可以准确地看到玩家可以站立的位置,然后我们可以查看问题是图像还是碰撞def draw:     self.rect.topleft = (self.x,self.y)     pygame.draw.rect(window,(0,0,0),self.rect)     window.blit(self.platforms,self.rect) #making sure that you draw the image on top of the square
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python