我如何访问一个更好的字符控制对象在JMonkeyEngine3的Vector3f位置



我想从弃用的"CharacterControl"移到"BetterCharacterControl"为3D游戏,我在JMonkeyEngine3这是我的代码到目前为止启动它们:

public void initPlayer(){
  // We set up collision detection for the player by creating
  // a capsule collision shape and a CharacterControl.
  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(-10, 10, 10));
  bulletAppState.getPhysicsSpace().add(player);

}

public void initBetterPlayer(){
  CapsuleCollisionShape betterCapsuleShape = new CapsuleCollisionShape(1.5f, 6f, 1);
  betterPlayer = new BetterCharacterControl(2f,6f,1f);
  // set basic physical properties:
  betterPlayer.setJumpForce(new Vector3f(0,5f,0)); 
  betterPlayer.setGravity(new Vector3f(0, 1f ,0));
  betterPlayer.warp(new Vector3f(-10, 10, 10));
  bulletAppState.getPhysicsSpace().add(betterPlayer);

}

在initBetterPlayer()我也有麻烦连接到betterPlayer的荚膜碰撞形状。

这里是我在simpleUpdate()方法中使用位置的地方:
player.setWalkDirection(walkDirection);
cam.setLocation(player.getPhysicsLocation());

问题是没有方法像getPhysicsLocation()为BetterCharacterControl似乎,只有一个受保护的字段称为"位置"。

如果你看一下BetterCharacterControl类和它的getShape()方法,你可以看到它创建了一个它返回的CollisionShape(它不存储它)。通过在类中重写该方法,您应该能够提供自己的形状(除非您发现可以使用其值代替)。它还使用了一个荚膜碰撞形状)。

BetterCharacterControl不是一个空间,所以有一个相机跟随它是困难的。相反,您应该让相机遵循BCC附加到的空间。

最新更新