2014-03-19 32 views
2

我創建了2個Spartials,並將其中一個設置爲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高的字符變成了一個巨大的:(我認爲我們可能需要改變質量,但是這一切都太亂了,我認爲bettercharctrl可以被修正/改進,我們可以擴展這個類來暴露幾個變量並覆蓋方法,我試圖去解決這個問題 –

+0

是的,你可以看到我們在這裏結束了什麼:https://github.com/devinbost/jMathGame3d (我還沒有在這個項目中工作過因爲這是一個學校任務,但我們確實解決了這個問題。) – devinbost