微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pygame-如何检查对象当前是否在移动

如何解决Pygame-如何检查对象当前是否在移动

正如标题所述,如何检查pygame中当前是否有物体(在这种情况下为rect)。

我尝试创建一个先前位置的变量,看看当前位置是否匹配,但是它只是在“ True”和“ False”之间闪烁,我认为这是因为对象的位置没有变化比游戏更新滴答声快

我当前正在使用以下方法更改对象的位置:

def MoveButton(self,new_xpos,new_ypos):
    self.x_pos = new_xpos
    self.y_pos = new_ypos

这是对象类中的一个函数,并且通过按键不断地被调用

解决方法

好吧,有多个答案可以解决这个问题-最简单的方法是添加一个prev_x_posprev_y_pos并说:

def MoveButton(self,new_xpos,new_ypos):
    self.prev_x_pos = self.x_pos
    self.prev_y_pos = self.y_pos
    self.x_pos = new_xpos
    self.y_pos = new_ypos

然后您可以添加一个checkIfMoving函数:

def checkIfMoving(self):
    self.isMoving = (self.prev_x_pos - self.x_pos != 0 or self.prev_y_pos - self.y_pos != 0)

如果矩形正在移动,则哪个将返回True。您也可以只添加代码行,而不使用该函数,但是我建议您将其放在每隔一帧运行的更新函数中。 另一种更整洁的方式是通过使用向量(即运动值)来整合物理学。使用矢量,您可以将它们的值添加到每帧pos_x和pos_y中,并且为了确定播放器的实际运动,您只需更改运动矢量的值即可,而不仅仅是执行self.pos_x -= speed。这些也集成在大多数游戏库中,包括PyGame。我建议您查一下它们,因为改进的物理性能通常会使游戏中的运动对玩家感觉更好。 您也可以只在主循环square.isMoving = False中进行设置,然后在其运行该函数后立即编写square.isMoving = True,这样,无论何时运行代码并且实际上正方形在移动,它都会只需将其设置为True。确保如果没有按下任何移动按钮,该功能将不会运行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。