我目前正在使用jMonkey beginner tutorials,特别是Hello Collision,并在教程CharacterControl中遇到了一个已弃用的课程。我找到了似乎最自然的接班人BetterCharacterControl。我已经能够修改教程代码以使其编译和运行,但是当我使用指定的键绑定时,"字符",即第一人称视角,似乎没有移动。我很确定问题是我没有正确设置播放器。这是教程中的旧代码行。
CollisionShape sceneShape =
CollisionShapeFactory.createMeshShape((Node) sceneModel);
landscape = new RigidBodyControl(sceneShape, 0);
sceneModel.addControl(landscape);
CapsuleCollisionShape capsuleShape = new CapsuleCollisionShape(1.5f, 6f, 1);
player = new CharacterControl(capsuleShape, 0.05f);
player.setJumpSpeed(20);
player.setFallSpeed(30);
player.setGravity(30);
player.setPhysicsLocation(new Vector3f(0, 10, 0));
这就是我把它改成了......
com.jme3.bullet.collision.shapes.CollisionShape sceneShape =
CollisionShapeFactory.createMeshShape((Node) sceneModel);
landscape = new RigidBodyControl(sceneShape, 0);
player = new BetterCharacterControl(1.5f,6f,1);
player.setJumpForce(new Vector3f(5f,20f,0f));
player.setGravity(new Vector3f(0f,10f,0f));
player.warp(new Vector3f(0,30,0));
1)由于某种原因,我必须为CollisionShape
添加完整的类名,即使我之前在文件中导入它,如果有人知道为什么那会很好但是现在不是一个大问题
2)我试图找到我能做的最类似的方法,但正如你所看到的,即使命名类似于某些人他们采取不同的论点。我查看了文档,但就解释每种方法实际上用于
的方法而言,它是非常稀疏的3)我改变代码的唯一其他地方是更新循环。我改变了这个..
cam.setLocation(player.getPhysicsLocation());
到此......
cam.setLocation(player.getViewDirection());
似乎没有造成任何问题,相机仍然正常移动(至少静止不动并平移。正如我所说,我根本无法移动)
如果有人有jMonkey的经验我确定这不太复杂......提前感谢
答案 0 :(得分:0)
对于迟到的回复(仅2个月......)抱歉,
您是否将BetterCharacterControl添加到PhysicsSpace?你似乎并不是这样,而且我相信如果它不在物理空间中,那么你所做的改变就不会被应用,所以运动实际上并没有移动它。
试试吧,也许吧?假设你还没有解决它/放弃它?