2014-03-13 26 views
0

當使用純的展開的Box2D和Cocos2D時,我曾經能夠通過一個名爲GetReactionForce的漂亮函數獲得關節上的反作用力。我最近開始嘗試Sprite Kit物理,我似乎沒有找到類似的東西。據我所知,沒有現成的。有什麼辦法可以在Sprite Kit中以某種方式實現這一點?物理引擎仍然是Box2D,但並非所有功能都可用。我認爲這可以通過使用形成接頭的物體的質量,密度,速度等特性來完成。但我不知道如何。Box2D Joint.GetReactionForce等效於Sprite套件

回答

2

這不是現成的,我想不出一種使用Sprite Kit的內置物理模擬或解決它的方法。

這就是說,忽略Sprite Kit的物理效果相當容易,而是將Box2D(或Chipmunk)嵌入到您的應用中。您可以在場景的didSimulatePhysics消息中引導世界(甚至可以在physicsWorld屬性爲nil的情況下調用該世界)。您可以將對節點的引用存儲在主體的userData中,並且在步進枚舉主體並更新其節點(從主體的userData獲取)位置和zRotation屬性後。

這些是必不可少的步驟。僅僅因爲Sprite Kit有物理內置並不意味着你不能使用其他物理引擎。

+0

是的,正確的。你知道,@Stefen,我可以說ObjectiveC包裝的Box2D是我想從Cocos2D轉移到Sprite kIt的唯一原因。 (我仍然覺得C++有點難以適應)但是這個和其他很多問題都證明了我最好堅持到Cocos2D,至少在iOS9之前,那時我會適應C++ :) –

+0

由於我只是在課堂上深入挖掘,SKPhysicsContact的確有一個名爲_collisionImpulse的ivar,您可以通過[self valueForKey:@「collisionImpulse」]進行訪問 - 但這構成了Apple在開發人員協議中禁止的私人API使用。 – LearnCocos2D

+0

嗯。你有沒有關閉狗頭人套件中的這些空白?我發現你已經對Sprite Kit丟失的東西做了很多改進。 –