jMonkeyEngine: BetterCharacterControl всегда подпрыгивает

Я создаю 2 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, он работает. Я знаю, что поле персонажа не соответствует форме, но я думаю, это не должно быть проблемой.

Заранее спасибо!


person EMP    schedule 19.03.2014    source источник


Ответы (3)


Вы пытались включить отладку?

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

Использование отладки может помочь вам увидеть формы столкновений.

person Niklas R.    schedule 03.05.2014

спасибо, что поделились советом по отладке. Проблема заключалась в следующем:

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

Вы не должны создавать цилиндр с меньшим радиусом, чем размеры.

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

работал нормально.

person EMP    schedule 07.05.2014
comment
то, что вы на самом деле изменили, было массой ... ммм .. Я попытаюсь изменить массу и посмотреть, может ли это работать и здесь. - person Aquarius Power; 15.01.2015

В моем случае мне нужно было увеличить высоту моего персонажа, увеличив BetterCharacterControl(1.5f, 1f, 1f) до BetterCharacterControl(1.5f, 6f, 1f). Я не уверен, почему это решило проблему для меня, но это помогло.

person devinbost    schedule 24.05.2014
comment
Вы нашли лучшее решение для этого? так что в основном ваш 1f высокий символ стал гигантом :(, я думаю, нам может понадобиться изменить массу, но это все слишком беспорядочно, я думаю, что вместо этого можно исправить/улучшить bettercharctrl. Мы можем расширить этот класс, чтобы выставить несколько переменных и переопределить методы, которые я пытаюсь сделать, чтобы все исправить. - person Aquarius Power; 15.01.2015
comment
Да, вы можете видеть, где мы оказались здесь: github.com/devinbost/jMathGame3d (я не Я некоторое время работал над этим проектом, потому что это было школьное задание, но мы решили эту конкретную проблему.) - person devinbost; 15.01.2015