BetterCharacterControl

BetterCharacterControl

我们使用jme3,而BetterCharacterControl的一个问题是未实现setMaxSlope。引擎的开发人员说,我们可以使用新的控制器自己解决问题:

http://hub.jmonkeyengine.org/forum/topic/setmaxslope-for-bettercharactercontrol/

我真的想要一个解决方案,因为my game需要它。我之前曾问过它,但我们没有解决它:

How to improve character control for my 3D game?

你能帮助我们进步吗?我录制了一个有问题的视频:

http://www.youtube.com/watch?v=PF_UzoOXD0E

一些文档在这里:
http://hub.jmonkeyengine.org/wiki/doku.php/jme3:advanced:walking_character?s[]=bettercharactercontrol#bettercharactercontrol

我为控制器添加功能的努力:

package adventure;

import com.jme3.math.Vector3f;
import com.jme3.bullet.control.BetterCharacterControl;

public class GameCharControl extends BetterCharacterControl {
    protected Vector3f lastlocation = new Vector3f();

    public GameCharControl(float x, float y, float z) {
        super(x, y, z);
    }

    @Override
    public void update(float tpf) {
        super.update(tpf);
        System.out.println("location " + location);
        System.out.println("lastlocation " + lastlocation);

        if (location.equals(lastlocation)) {
            System.out.println("update2");
            this.setHeightPercent(101);
        }
        rigidBody.getPhysicsLocation(location);
        applyPhysicsTransform(location, rotation);
        lastlocation = location;
    }
}

但是上面没有做任何改变,或者如果我将高度设置为101,那么游戏角色将很难移动。您能帮我们看看应该怎么做吗?

最佳答案

由于运动将角色视为由PhysicsRigidBody制成的PhysicsJoint,因此他的腿或膝盖可能没有足够的向上弹力。希望那里的参数没有设置为适应该楼梯尺寸。

由于您在倾斜楼梯上导航时遇到的最大麻烦,第二个措施可能是调整步行方向。我怀疑您是否可以依靠location.equals(lastlocation),但是在短距离内是否可以很好地检查角色是否遇到障碍。知道要采取的步骤后,您就可以干净地缩放它或将其卡在下面。

08-06 20:24