2014-03-19 7 views
2

나는 2 개의 Spartial을 만들고 RigidBodyControl로 설정합니다. 둘째는 BetterCharacterControl입니다. 둘 다 크기 = (10f, 1f, 10f) 및 (0.5f, 0.5f, 0.5f)의 상자입니다.jMonkeyEngine : 항상 튀는 BetterCharacterControl

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을 사용하면 작동합니다. 문자 상자가 도형과 일치하지 않지만 그것이 내가 추측하는 문제가 아니어야한다는 것을 알고 있습니다.

미리 감사드립니다.

답변

1

디버깅을 시도 했습니까?

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

디버깅을 사용하면 충돌 모양을 볼 수 있습니다.

0

감사합니다. 팁을 공유해 주셔서 감사합니다. 문제였다 :

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

당신은 크기보다 작은 반경을 가진 실린더를 작성해서는 안됩니다.

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

잘 처리되었습니다.

+0

실제로 변경 한 것은 질량 ... 음 ... 질량을 변경하려고 시도하고 여기에서도 효과가 있는지 봅니다. –

0

내 경우에는 BetterCharacterControl (1.5f, 1f, 1f)을 BetterCharacterControl (1.5f, 6f, 1f)으로 늘려서 캐릭터의 높이를 높여야했습니다. 이것이 왜 내가이 문제를 해결했는지는 잘 모르겠다.

+0

더 나은 해결 방법을 찾으셨습니까? 그래서 근본적으로 1f의 큰 char은 거대한 것이되었습니다. (질량을 바꿀 필요가 있을지도 모릅니다 만, 모두 너무 복잡해서, bettercharctrl을 대신 고정/개선 할 수 있다고 생각합니다. 우리는 클래스를 확장하여 여러 변수를 표시하고 재정의 할 수 있습니다. 방법을 사용하여 문제를 해결하려고 노력하고 있습니다. –

+0

네, 여기서 끝났던 곳을 볼 수 있습니다 : https://github.com/devinbost/jMathGame3d (잠시 동안이 프로젝트를 진행하지 않았습니다. 학교 과제물 이었기 때문에이 문제를 해결했습니다.) – devinbost