Pygame地面碰撞检测和位置重置



假设我的角色正在下落,并朝着某个精灵平台前进,并且一旦检测到碰撞,我就会标记我的角色已经降落,那么重置角色位置的最佳方法 - 这样他就在平台的矩形上方,或者他仍然在剪辑它?

我担心的是,如果我的角色在平台的矩形上方,那么我的函数 fall() 将被调用,因为他没有触摸任何东西,如果我的角色正在剪切平台的矩形,那么我的 jump() 函数可能会受到阻碍,因为它可能会认为他一起飞就降落了。 显然两者都有解决方法, 但我真的只是在寻找公约,如果有的话。

(如有必要,我可以发布代码,但代码不是问题。 我真的只是在寻找正确的方法)

谢谢

话筒

我会让他触摸平台,这样fall()就不会再被调用了。

如果我的角色正在剪切平台的矩形,那么我的 jump() 函数可能会受到阻碍,因为它可能会认为他一起飞就降落了。

在 jump() 函数中,当它移动字符时,使其在移动至少 x 个像素之前无法停止。

为此,您可以在jump()开始时创建一个布尔值False,并使用一个计数器在遍历 x 像素后使其True。确保 x 刚好足以让角色停止剪辑平台,而不是太多,以免与其他东西发生碰撞。

一旦它移动了x像素,然后允许碰撞测试开始,以查看角色何时再次击中某物。

所以例如:

MINIMUM_DISTANCE = x 
# ^ how many pixels you want to move to stop clipping
count = 0 #used for counting
def jump():
    global count
    in_air = False
    #do your movements here, and increase count each time you move a pixel
    if count >= MINIMUM_DISTANCE: in_air=True
    if in_air:
        #collision detection here
        #once there is a collision:
        if collision:
            count = 0
    return

仅供将来参考,最好发布您拥有的代码,即使它不是与代码相关的错误。 只是为了让我们可以看到并感受您的方法

希望我能帮上忙

最新更新