Pygame:如何连续移动角色和视图?

2024-10-16 20:39:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我不知道该怎么解释,但我正在尝试制作一个游戏,玩家可以在窗户上行走,遇到敌人等等

我有一个窗口的代码。像这样:

window = pygame.display.set_mode((500, 480))

我的角色可以向左,向右移动,在这个窗口上跳跃,但是当他到了拐角处,他停了下来。所以我的问题是如何让他走得更远,比如说,当他走的时候,改变背景,遇到另一个敌人等等? 当角色触角的时候,我需要上课打电话给她吗? 希望你能理解。 谢谢。你知道吗


Tags: 代码游戏角色modedisplay玩家windowpygame
1条回答
网友
1楼 · 发布于 2024-10-16 20:39:44

您需要了解您的角色何时接触/接近屏幕边框,然后采取适当的操作。
在我为好玩而编写的一个游戏中,代表主要角色的类有一个方法来检查角色何时在曲面sface内。我在这里复制粘贴它的骨架来展示一个例子:

def insidesurf(self, sface):
    if sface.get_rect().contains(self.rect):
        return None
    else:
        if self.rect.top < sface.get_rect().top:
            #the character is going out from the screen from the top-side
        elif self.rect.left < sface.get_rect().left:
            #the character is going out from the screen from the left-side
        elif self.rect.bottom > sface.get_rect().bottom:
            #the character is going out from the screen from the bottom-side
        elif self.rect.right > sface.get_rect().right:
            #the character is going out from the screen from the right-side

移动角色后(按键后),在主循环的每次迭代中调用此方法。参数sface是您的window
在各种if语句中到底要做什么取决于您。在我的例子中,它重绘屏幕,替换屏幕另一侧的字符。如果角色从左侧退出,则会在右侧重新绘制,以给人一种感觉,即摄影机正在显示下一个房间,而角色处于同一位置。
您也可能不希望传递window,而是传递一个较小的曲面,以便滚动场景而不是全部重画。你知道吗

相关问题 更多 >