1

假设我的角色正在下落,并朝着某个精灵平台前进,并且一旦检测到碰撞,我就会标记我的角色已经着陆,那么重置我的角色位置的最佳方法是什么 - 让他在平台的矩形上方左右他还在剪吗?

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

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

谢谢,

麦克风

4

1 回答 1

1

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

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

在 jump() 函数中,当它移动字符时,使它不能停止,直到它移动最少 x 个像素。

您可以通过False在开头设置一个布尔值并在遍历 x 个像素后jump()设置一个计数器来实现此目的。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

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

希望我能帮上忙

于 2012-06-15T19:17:16.443 回答