当前位置: 首页 > 知识库问答 >
问题:

如何在pygame中获取一个精灵的当前坐标?

康锦
2023-03-14

我试图做一个简单的游戏,玩家必须要么躲闪敌人,要么向他们射击。到目前为止,玩家和敌人的部分似乎很好,但我被困在导弹的事情。我正在试图弄清楚当鼠标左键被按下时,如何在玩家旁边产卵一枚导弹。所以我正在寻找一种方法来获得玩家当前的坐标,在这些坐标的右边加上一个,如果玩家按下左边按钮,导弹的坐标会是什么。

class Player(pg.sprite.Sprite):
    def __init__(self):
        super(Player, self).__init__()
        self.surf = pg.image.load("Player.png").convert()
        self.surf = pg.transform.smoothscale(self.surf, (75, 75))
        self.surf.set_colorkey((255, 255, 255), RLEACCEL)
        self.rect = self.surf.get_rect()
    def move(self, pressed_keys):
        if pressed_keys[K_UP]:
            self.rect.move_ip(0, -10)
        if pressed_keys[K_DOWN]:
            self.rect.move_ip(0, 10)
        if pressed_keys[K_LEFT]:
            self.rect.move_ip(-10, 0)
        if pressed_keys[K_RIGHT]:
            self.rect.move_ip(10, 0)
        if self.rect.left < 0:
            self.rect.left = 0
        if self.rect.right > SCREEN_WIDTH:
            self.rect.right = SCREEN_WIDTH
        if self.rect.top <= 0:
            self.rect.top = 0
        if self.rect.bottom >= SCREEN_HEIGHT:
            self.rect.bottom = SCREEN_HEIGHT

class Missile(pg.sprite.Sprite):
    def __init__(self):
        super(Missile, self).__init__()
        self.surf = pg.image.load("Missile.png").convert()
        self.surf = pg.transform.smoothscale(self.surf, (20, 20))
        self.surf.set_colorkey((0, 0, 0), RLEACCEL)
        self.rect = self.surf.get_rect(center=)
    def launch(self):
        self.rect.move_ip(5, 0)
        if self.rect.left < 0:
            self.kill()

共有1个答案

蒙化
2023-03-14

坐标存储在rect属性中。Sprite的左上方是self.rett.topleft或(self.rett.x,self.rett.y)。rect属性是一个pygame.rect对象,指定sprite的边界矩形。

 类似资料:
  • 我在PyGame中创建了两个简单的精灵,其中一个是雨伞,另一个是雨滴。雨滴被添加到一个名为< code>all_sprites的sprite组中。伞精灵有自己的组,名为< code>Umbrella_sprite 雨滴从屏幕顶部“落下”,如果其中一个碰到雨伞/与雨伞碰撞..雨滴应该被删除了。但是除了特定雨滴之外,所有其他雨滴都受此影响。

  • 对于我的pyplay塔防御计划,我试图弄清楚如何实现与地图上已经放置的其他塔的碰撞。 放置过程将创建一个48x48预览精灵,当它在游戏屏幕上时,该精灵将在玩家鼠标上的网格中移动。塔精灵保存在名为的组中。我有这段代码来检查精灵是否与某些地形瓷砖和塔精灵发生碰撞(这在精灵更新功能中): 循环前进部分是为了检查预览精灵是否与任何塔精灵矩形碰撞。如果是,它将变量设置为true或其他,False。 然后程序

  • 我正在PyGame中制作一个太空入侵者游戏,但当我尝试绘制投射物时,它会覆盖/更改主精灵(平面)。如何解决此问题,以便在屏幕上显示多个精灵?

  • 我正在用移动的精灵和障碍物制作游戏来学习SpriteKit。我希望移动的精灵与障碍物相撞并从障碍物上反弹,但我希望障碍物保持固定。我该怎么做?我尝试了以下方法,但没有成功: 设置障碍物.physicsBody?。isDynamic=true。这使得精灵们穿过了障碍物 使用 。我知道<代码>联系人。车身A和是通过值而不是引用传递的,因此我循环通过一个带有障碍物的数组,并以此方式设置速度。障碍物仍然被

  • 从精灵图(雪碧图)中创建精灵【为了防止与精灵混淆,我在之后的译文中都将采用雪碧图这一译法】 你现在已经知道了怎么从一个单文件内加载图像。但是作为一个游戏设计师,你没准更经常使用 雪碧图(也被称之为 精灵图)。Pixi封装了一些方便的方式来处理这种情况。所谓雪碧图就是用一个单文件包含你游戏中需要的所有文件,这里就是一个包含了游戏对象和游戏觉得的雪碧图。 整个雪碧图是192192像素宽高,但每一个单图

  • 所以我一直在做一个游戏,到目前为止最大的问题是我们不能让玩家与球场上的任何物体相撞。相反,它们会直接穿过树。有人能告诉我为什么吗?以下是我尝试用于碰撞检测的代码: 这是理论上的声音还是我完全错了?