假设我的角色正在堕落,朝着某个精灵平台走去,并且一旦发现碰撞就标记我的角色落地了,重置角色位置的最佳方法是什么 - 这样他就在平台的矩形上方或者说他还在削减它?
我担心的是,如果我的角色位于平台的矩形之上,那么我的函数fall()将被调用因为他没有触及任何东西,并且如果我的角色正在剪切平台的矩形,那么我的jump()函数可能会被阻碍,因为它可能认为他一旦起飞就会降落。显然还有两种解决办法,但我真的只是在寻找约定,如果有的话。
(如果需要,我可以发布代码,但代码不是问题。我真的只是在找正确的方法)
谢谢,
麦克
答案 0 :(得分:1)
我会让他触摸平台,以便不再调用fall()
。
如果我的角色正在削减平台的矩形,那么我的jump()函数可能会受到阻碍,因为它可能会认为他一旦起飞就会降落。
在jump()函数中,当它移动角色时,使它无法停止,直到它移动至少x个像素。
您可以通过在False
的开头设置一个布尔值jump()
,并在遍历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
仅供将来参考,最好发布您拥有的代码,即使它不是代码相关的错误。这样我们就可以看到并感受到你的方法
希望我能帮忙