我们使用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)
,但是在短距离内是否可以很好地检查角色是否遇到障碍。知道要采取的步骤后,您就可以干净地缩放它或将其卡在下面。