如何走楼梯和斜坡?

5
我们使用jme3,但是BetterCharacterControl存在一个问题,就是没有实现setMaxSlope方法。引擎的开发者说我们可以使用新的控制器自己解决此问题:http://hub.jmonkeyengine.org/forum/topic/setmaxslope-for-bettercharactercontrol/。因为我的游戏需要此功能,所以我真的需要一个解决方案。之前我们曾询问过此问题,但并没有解决: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,则游戏角色的移动会变得更加困难。您能帮助我们看看应该怎么做吗?


1
好的,我对这方面没有任何经验,但也许我的简单想法可以帮到你。我建议从边缘设置一个斜坡,这样看起来就不像是他在踏上楼梯。为了做到这一点,你需要知道附近是否有楼梯,半径要大一些。 - Dediqated
2个回答

2

由于运动将角色视为由物理关节PhysicsJoint制成的PhysicsRigidBody,因此他的腿或膝盖可能没有足够的向上力量。希望那里的参数只是没有设置来适应这种大小的楼梯。

由于您在导航倾斜楼梯方面遇到了最大的问题,第二个措施可能是调整行走方向。我怀疑您不能依靠location.equals(lastlocation),但在短距离内是一个很好的检查,以查看角色是否遇到障碍物。一旦您知道有一个台阶,您想要清晰地缩放它或保持卡在下面。


2

我不确定,但我认为它可能太旧且已弃用。jme3开发者在论坛中说我们应该在BetterCharacterControl上工作,并向其中添加setMaxSlope方法,但这很困难。 - Niklas Rosencrantz
1
你可能是对的,我也无法在我的游戏中让KCC工作...这可能是我的问题,或者代码有缺陷。我放弃尝试使用它并自己编写了碰撞检测(幸运的是我的游戏足够“简单”,这是可行的)。 - ClickerMonkey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接