我用Box2D製作了一款汽車遊戲[在Flash中],我還有一個剩餘的錯誤,我無法修復。我添加了圖形並將它們放在Box2D主體的頂部。一切都如預期一樣好,但在X輪旋轉後,電影剪輯車輪,停止旋轉。我做了這樣的事情wheelSprite.rotation = wheelBody.GetAngle() * 180/Math.PI
。我運行了一個單獨的程序,我看到如果你做了X.rotation += variable
並且你在每幀增加變量,在〜30 000(變量的值)之後,MovieClip停止旋轉,所以我在〜28 000後將它重置爲0。做? wheelBody.GetAngle()
不斷上升,我需要它使它看起來真實。我該如何重置?MovieClip在Box2D後停止旋轉Body
2
A
回答
0
您不能使用SetAngle()函數將角度設置爲等效角度嗎?
ie:如果角度旋轉360度,將其設置回0?
4
前段時間我遇到了這個問題。解決方案是:
rotation = newRotation % 2*Math.PI;
這意味着旋轉必須在0到360度之間(0 - 2 * PI)。
2
剩餘解決這個問題:
yourMC.rotation = (yourMCbody.GetAngle() * 180/Math.PI) % 360;
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/operators.html#modulo
0
的Box2D的手動指定機構的轉動是無界的,並經過一段時間可能會大,你可以,您可以在使用SetAngle
復位。我使用while循環來計算標準化角度(你可以用浮點操作數顯然調用模,但我不知道這是否對性能不好)。此代碼將角度標準化爲0 <= angle < 2pi
,但我也看到角度有時會標準化爲-pi <= angle < pi
。
const 2PI:Number = Math.PI * 2;
var rotation:Number = wheelBody.GetAngle();
// normalize angle
while(rotation >= 2PI)
rotation -= 2PI;
while(rotation < 0)
rotation += 2PI;
// store the normalized angle back into Box2D body so it doesn't overflow (optional)
wheelBody.SetAngle(rotation);
// convert to degrees and set rotation of flash sprite
wheelSprite.rotation = rotation * 180/Math.PI;
我還沒有收集到一個函數的代碼,但它會很容易這樣做。
相關問題
- 1. Ladda旋轉動畫都在旋轉的()停止一秒後
- 2. LibGDX + Box2D旋轉
- 3. CSS旋轉輪5秒後停止?
- 4. 360度後停止圖像旋轉
- 5. 停止UITabBarController旋轉但UIViewController旋轉
- 6. jQuery的旋轉:停止旋轉不息
- 7. Box2d Edgeshape不旋轉
- 8. 旋轉懸停並僅在使用CSS3動畫後停止?
- 9. LibGDX Touch Box2D Body
- 10. 停止旋轉過去xyz度並防止它從0度向後旋轉
- 11. 停止JavaScript div旋轉
- 12. 讓旋轉木馬停止
- 13. Surfacelistbox拖放(停止旋轉!?)
- 14. Android ProgressDialog停止旋轉
- 15. 如何停止mainView旋轉?
- 16. 停止旋轉和移動
- 17. PanoramaGL如何停止旋轉
- 18. Bootstrap旋轉木馬在最後一項後停止
- 19. 在MouseOver中旋轉縮略圖並停止在Mouseleave中旋轉
- 20. 如何在完成所有旋轉後停止旋轉html圖像?
- 21. actionscript - 如何停止movieclip
- 22. as3:如何讓MovieClip停止
- 23. 移動box2d body球
- 24. Body Adjustable Velocity AndEngine/Box2D
- 25. 更改旋轉中心box2d
- 26. cocos2d和box2d:相機旋轉
- 27. Box2D的身體旋轉
- 28. 的Box2D如何從旋轉
- 29. 的Box2D:的旋轉關節
- 30. 在css上停止旋轉動畫