首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我如何防止我的一个精灵穿过pygame中的对象?

我如何防止我的一个精灵穿过pygame中的对象?
EN

Stack Overflow用户
提问于 2014-12-10 10:08:24
回答 1查看 1.7K关注 0票数 3

所以我一直在做一个游戏,到目前为止最大的问题是我们不能让玩家与场地上的任何物体相撞。取而代之的是它们直接穿过树。有人能告诉我为什么吗?下面是我尝试使用的碰撞检测代码:

代码语言:javascript
复制
for tree in treelist:


    if self.player.rect.x == tree.rect.x:
        self.player.rect.x == self.player.rect.x - 2
    if self.player.rect.x == tree.rect.x + tree.rect.width:
        self.player.rect.x == self.player.rect.x + 2

    if self.player.rect.y == tree.rect.y:
        self.player.rect.y == self.player.rect.y - 2
    if self.player.rect.y == tree.rect.y + tree.rect.height:
        self.player.rect.y == self.player.rect.y + 2

这是理论上的声音,还是我做错了?

EN

回答 1

Stack Overflow用户

发布于 2014-12-10 10:21:54

近乎合理的理论。您只需检查player矩形位置是否与tree矩形位置的边界完全相同。这种情况很少发生。你也需要检查玩家是否在树的边界之间,更像这样:

代码语言:javascript
复制
# check if player is overlapping the tree
if tree.rect.x <= self.player.rect.x <= tree.rect.x + tree.rect.width:
    # decide on how to move player away from the tree depending on previous frame
    # if player is moving forward, send them backwards from tree
    if self.player.rect.prev_x < self.player.rect.x:
        self.player.rect.x -= 2
    # otherwise send them forwards from tree
    else:
        self.player.rect.x += 2

重叠检查的确切逻辑和重叠时的反应完全取决于您,但这种事情应该可以工作。请注意,你需要跟踪玩家在前一帧中的位置,否则你将不知道他们从哪个方向击中树。您可以这样做:

代码语言:javascript
复制
self.player.rect.prev_x = self.player.rect.x
self.player.rect.x += player_velocity
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27392237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档