5

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

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

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

如何改善我的 3D 游戏的角色控制?

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

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,那么游戏角色很难移动。你能帮我们看看应该怎么做吗?

4

2 回答 2

2

为什么不使用已实现 setMaxSlope 的 KinematicCharacterController?

不确定您使用的是哪个 JME,但这是该控制器的源代码:

https://code.google.com/p/jbullet-jme/source/browse/branches/jbullet/src/com/bulletphysics/dynamics/character/KinematicCharacterController.java

于 2013-09-12T17:08:46.023 回答
2

由于运动将角色视为PhysicsRigidBodyPhysicsJoints 组成,因此他的腿或膝盖可能没有足够的向上力量。希望那里的参数没有设置为适应楼梯的大小。

由于您在导航有角度的楼梯时遇到了最大的麻烦,因此次要措施可能是调整步行方向。我怀疑您是否可以依靠,location.equals(lastlocation)但在很短的距离内可以很好地检查角色是否遇到障碍物。一旦你知道有一个步骤,你想要干净地缩放它或停留在下面。

于 2013-09-09T18:04:02.733 回答