2012-11-25 67 views
1

演示程序一次滑動屏幕。身體(在我的情況下,它是一個藍色的大炮)將相應地旋轉。所以我爲炮身和地面體定義了一個旋轉關節,但是看起來錨不能正確設置,導致不能用鼠標關節旋轉身體。 「國際慣例」,我會接着上傳相關的編碼/屏幕。請看看你能否幫助我。如何在使用b2RevoluteJointDef時設置旋轉錨點

圖片1:定義關聯體,旋轉接頭

圖片2:觸摸回調函數:創建小鼠關節

圖片3:Simulator屏幕(從模擬器,似乎革命錨點是不正確的)

由於缺乏「信​​譽」,我無法上傳圖片或發佈img鏈接,我在自己的評論中添加了img鏈接。

+0

圖片1:HTTP://i.imgur.com/OYrqY.png圖二:HTTP://我。 imgur.com/EzseG.png圖3:http://i.imgur.com/CfDHN.png – Chailie

+0

當您在屏幕上滑動時,是否看到鼠標關節正在繪製?它在正確的地方嗎? – iforce2d

+0

當我擦拭屏幕時,炮身會閃爍一會兒,這算不算? – Chailie

回答

2

首先,在創建卷接頭時,你應該使用初始化,像這樣:

cannonJointDef.Initialize(groundBody, cannonBody, cannonBody->GetPosition()); 

最後一個參數是固定點的世界座標。在這種情況下,它將成爲大炮的中心。

然後,嘗試不mouseJoint只是通過直接設置旋轉而旋轉的大炮,:

CGPoint touchVec = ccpSub(touchPos, _cannon.position); 
float angle = ccpToAngle(touchVec) - M_PI_2; 
cannonBody->SetTransform(cannonBody->GetPosition(), angle); 
+0

我不認爲這是因爲我沒有使用初始化方法,起初,我用「cannonJointDef.Initialize(groundBody,cannonBody,cannonBody-> GetPosition())初始化旋轉關節;」 ,但它並沒有奏效。好的,我會嘗試「SetTransform()」但爲什麼不能使用鼠標聯合? – Chailie

+0

我昨天在另一臺MAC上運行它,它可以正確運行,我不知道它是否是原來PC的問題。無論如何,它現在解決了。謝謝你們 – Chailie