假设我的角色正在下落,并朝着某个精灵平台前进,并且一旦检测到碰撞,我就会标记我的角色已经降落,那么重置角色位置的最佳方法 - 这样他就在平台的矩形上方,或者他仍然在剪辑它?
我担心的是,如果我的角色在平台的矩形上方,那么我的函数 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
仅供将来参考,最好发布您拥有的代码,即使它不是与代码相关的错误。 只是为了让我们可以看到并感受您的方法
希望我能帮上忙