我们使用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
我努力将功能添加到控制器:
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那么它很难为游戏角色移动。你能帮我们看看应该做些什么吗?
答案 0 :(得分:2)
由于动作将角色视为由PhysicsRigidBody
制成的PhysicsJoint
,因此他的腿或膝盖可能没有足够的向上力量。希望那里的参数没有设置成适应那个楼梯大小。
由于您在导航有角度的楼梯时遇到最大麻烦,因此可能需要采取措施来调整行走方向。我怀疑你可以依靠location.equals(lastlocation)
,但在很短的距离内检查角色是否遇到了障碍。一旦你知道有一个步骤,你想要干净地缩放它或保持卡在下面。
答案 1 :(得分:2)
为什么不使用已实现setMaxSlope的KinematicCharacterController?
不确定您使用的是哪个JME,但这是该控制器的来源: