在Blender 的游戏引擎中使用character物理时,发现控制character移动时,如果角色静止在一个特别小的斜坡上,都会发生滑动现象,尝试着增加了地面的摩擦力,问题依然存在

原因是角色在静止不动时,受重力影响向下滑动。角色的所有运动全是靠按键驱动,所以可以写一个脚本,判断当角色在地面上且没有按键时,将重力设置为 0,即不受重力影响

具体步骤

  • 首先为角色添加Character物理属性(中文翻译应该是角色这里)

  • 在逻辑编辑器中为角色添加以下节点

  • anti slide脚本:

import bge

def main():

    cont = bge.logic.getCurrentController()
    own = cont.owner
    ground = cont.sensors['Collision']
    
    key = cont.sensors['Keyboard']
    
    char=bge.constraints.getCharacter(own)
    
    if key.positive:
        char.gravity = 29
    else:
        if ground.positive:
            char.gravity = 0
        else:
            char.gravity = 29
main()