jMonkeyEngine:BetterCharacterControl 总是弹跳

3

我创建了两个Spartial,一个设置为RigidBodyControl,另一个设置为BetterCharacterControl。 它们都是大小为(10f, 1f, 10f)和(0.5f, 0.5f, 0.5f)的盒子。

 floor = createFloor();
 CollisionShape sceneShape = CollisionShapeFactory.createMeshShape(floor);
 landscape = new RigidBodyControl(sceneShape, 0);
 floor.addControl(landscape);
 rootNode.attachChild(floor);

 character = createCharacter();
 player = new BetterCharacterControl(1F,1F,0.01f); 
 character.addControl(player);
 rootNode.attachChild(character);

 bulletAppState.getPhysicsSpace().add(landscape);
 bulletAppState.getPhysicsSpace().add(character); 
 landscape.setPhysicsLocation(new Vector3f(0,-4,5));
 player.warp(new Vector3f(0,0,0));

现在,如果我运行它...角色只会在地板上弹跳,我不知道为什么。 但是,如果我使用标准的CharacterControl,它就可以工作。 我知道角色框不匹配形状,但我认为这不应该是问题。
提前感谢!
3个回答

1

你尝试开启调试模式了吗?

bulletAppState = new BulletAppState();
bulletAppState.setThreadingType(BulletAppState.ThreadingType.PARALLEL);
stateManager.attach(bulletAppState);
bulletAppState.setDebugEnabled(true);

使用调试可以帮助您查看碰撞形状。

0
在我的情况下,我需要通过将BetterCharacterControl(1.5f, 1f, 1f)增加到BetterCharacterControl(1.5f, 6f, 1f)来增加角色的高度。我不确定为什么这对我解决了问题,但它确实有效。

你找到更好的解决方法了吗?所以基本上你的1f高字符变成了一个巨人 :(,我认为我们可能需要改变质量,但这一切都太麻烦了,我认为最好是修复/改进bettercharctrl。我们可以扩展该类以公开几个变量并覆盖方法,这就是我正在尝试做的来解决问题。 - Aquarius Power
是的,您可以在这里看到我们的最终成果:https://github.com/devinbost/jMathGame3d(我已经有一段时间没有继续开发这个项目了,因为它只是一个学校作业,但我们确实解决了这个特定的问题。) - devinbost

0

感谢分享调试技巧。 问题是:

player = new BetterCharacterControl(1F,1F,0.01f); 

不应该创建一个半径比尺寸还小的圆柱体。

player = new BetterCharacterControl(1F,1F,1F); 

运行良好。


你实际上改变的是质量...嗯...我会尝试改变质量,看看这里是否也可以工作。 - Aquarius Power

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