2014-05-15 3 views
1

저는 JME3에 새로운 것이므로 BetterCharacterControl을 이해하는데 약간의 문제가 있습니다.BetterCharacterControl이 RigidBody를 오른쪽 위치에 적용하지 않았습니다.

상자에 BetterCharacterControl을 적용하려고하면 항상 가운데가 아닌 상자의 위쪽에서 "확장됩니다". (사진이 더 나은 :)

내가이 적용됩니다 위치를 변경할 수있는 기능을 찾을 수 없습니다

The Problem

, 나는 이미 내가 직접 BoxCollisionShape에 강체를 변경하는 서브 클래스를 만들려고한다고 설명하지만를 어떻게 든 isOnGround 메서드를 망칠 것 같습니다. 또한 나중에 슬로프를 사용하려면 캡슐 모양을 갖는 것이 좋습니다. 다른 주에

Box box2 = new Box(10, 15, 10); 
player = new Geometry("Player", box2); 
player.setLocalTranslation(new Vector3f(0, 20, 0)); 
Material mat = new Material(assetManager, 
      "Common/MatDefs/Light/Lighting.j3md"); 
mat.setBoolean("UseMaterialColors", true); 
mat.setColor("Ambient", ColorRGBA.Blue); 
mat.setColor("Diffuse", ColorRGBA.Blue); 
player.setMaterial(mat); 

playerC = new BetterCharacterControl(12, 30, 0); 
playerC.setJumpForce(new Vector3f(0, 700, 0)); 
player.addControl(playerC); 

rootNode.attachChild(player); 

bulletAppState.getPhysicsSpace().add(playerC); 

, 내가 그것을 아무것도 할 수 있도록 도움

에 대한

임 다행 (내가 어떤 중력 값을 변경 didnt가) 점프의 힘에 대한 거대한 벡터를 적용 할 필요가 나는 것 같아

+0

반대로 생각하면 어떨까요? 그래픽을 물리학에 적합하게 만듭니다. 나는 노드를 사용하여 플레이어에 상대적으로 box2를 움직일 수 있습니다 (또는 상자의 로컬 번역 만 설정하면됩니다) –

답변

0

같은 문제가있었습니다. 내가 해결 한 방법은 평범하지 않습니다. 나는 클래스를 코딩하고 다음과 같이 getShape() 메소드를 덮어 BetterCharacterControl에서 상속 않았다 자식 노드 값에 의해 상쇄 될 수 있도록 원래의 코드가 같은 방법으로 생성 된 복합이기 때문에

protected CollisionShape getShape() { 
    //TODO: cleanup size mess.. 
    CapsuleCollisionShape capsuleCollisionShape = new CapsuleCollisionShape(getFinalRadius(), (getFinalHeight() - (2 * getFinalRadius()))); 
    CompoundCollisionShape compoundCollisionShape = new CompoundCollisionShape(); 
    //Vector3f addLocation = new Vector3f(0, (getFinalHeight()/2.0f), 0); REMOVED LINE 
    Vector3f addLocation = new Vector3f(0, 0, 0); //NEW LINE 
    compoundCollisionShape.addChildShape(capsuleCollisionShape, addLocation); 
    return compoundCollisionShape; 
} 

이 작동 : (getFinalHeight()/2.0f). 새 라인은 상자 세트의 중앙 위치에 객체를 남겨 두면서 이러한 변화를 인식하지 못합니다. 그러나 문제를 해결하는이 방법을 사용하면 실제로 최종 메쉬에서 복합 메쉬를 사용할 때 문제가 발생할 수 있습니다.