为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

九州编程 2022-11-24 15:25:57
好的所以我发现我的碰撞是基于这个方块并且它没有与我的图像发生碰撞因为我的图像不在方块内或者你可以称之为碰撞箱它有没有办法将我的玩家放在碰撞箱内所以它可以很好地工作这是我的玩家类我的游戏视频我知道这个问题,但我只是不知道如何在不移动碰撞箱的情况下移动我的播放器,这样我就可以很好地碰撞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)
查看完整描述

1 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

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


查看完整回答
反对 回复 2022-11-24
  • 1 回答
  • 0 关注
  • 48 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信