【问题标题】:Moving a sprite to another sprite in pygame在pygame中将精灵移动到另一个精灵
【发布时间】:2013-06-24 15:33:16
【问题描述】:

我是 pygame 的新手,正在尝试开发一个 8-Bit Shooter。我想要的是当用户按下空格键时,子弹会发射并一直移动,直到它击中暴徒或窗口边缘。这是子弹类:

class BULLET:
    def __init__(self, location):
        self.pos = [0,0]
        self.image = NOBULLET
        self.rect = self.image.get_rect()
        self.direction = 0
    def move(self):
        if self.rect.right >= screen.get_rect().right:
            self.rect.right = self.rect.right - 10
        if self.rect.left <= screen.get_rect().left:
            self.rect.right = self.rect.right + 10
        if self.rect.top <= screen.get_rect().top:
            self.rect.top = self.rect.top + 10
        if self.rect.bottom >= screen.get_rect().bottom:
                self.rect.bottom = self.rect.bottom - 10
    def update(self):
        while True:
            for event in pygame.event.get():
                if event.type == KEYDOWN:
                    if (event.key == K_SPACE and Gun.image == NOGUN):
                        self.pos == Player.pos()
                        self.direction == Player.direction

我想要的是当按下空格键时子弹会飞向玩家,并朝着玩家面对的方向移动,直到它击中一个生物或窗户的边缘。

[编辑] 这是主要的拍摄循环:

if AMMO > 0:
    if event.type == pygame.KEYDOWN and Gun.image == NOGUN:
        if event.key == pygame.K_SPACE and Gun.image == NOGUN:
            Bullet.direction = Player.direction
            Bullet.pos == Player.pos
            shot.play()
            print "BANG"
            AMMO = AMMO - 1
            time.sleep(0.09)
            Bullet.image == NOBULLET 

【问题讨论】:

    标签: python pygame sprite


    【解决方案1】:

    将位置和方向作为参数放入您的__init__ 我看到您已经有了位置。现在你需要将那些从构造函数存储到类中

    如果您有 self.pos = [0,0],则需要将 = 设置为作为参数传入的位置

    使用self.direction = orientation对方向做同样的事情

    [编辑] 下面我为你详细介绍,这是你的init方法:

    def __init__(self, location):
        self.pos = [0,0]
        self.image = NOBULLET
        self.rect = self.image.get_rect()
        self.direction = 0
    

    你需要给它添加一个参数,现在它有两个,一个是自己,一个是位置,你还需要方向,它最终应该看起来像这样def __init__(self, location, orientation): 现在,当您创建子弹时,您必须将玩家的位置 (x,y) 和他面对的方向传递给它(对于 N,E,S,W 可能是 0,1,2,3)

    然后,您需要通过 self.variable = argument 来存储这些参数,用于位置和方向

    【讨论】:

    • @user2493744 我刚刚为您添加了更多信息
    • 当我按照你说的做的时候,位置仍然是 0,0 而我没有输入那些cordinantes
    • 我不完全了解您的代码,但假设您传递了一个位置列表,然后您会写 self.pos = location
    • @user2493744 如果您将其作为第三个参数,您还必须编写 self.direction =orientation
    • 我都按照你说的做了,现在我如何让子弹的位置在我按空格键时转到玩家的位置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多