2016-12-24 48 views
0

SceneKit 是否有當dynamicBody在靜息狀態下得到通知的方式? 我想刪除dynamicBody當它結束掉在地上,完全停止活動 - 我相信,我將有相當大的量的,所以我想用基於一些事件,而不是通過所有的bodies循環,並檢查它們的速度?SceneKit SCNPhysicsBody得到通知休息

回答

1

你可以在isResting財產使用鍵值觀察。見Is key-value observation (KVO) available in Swift?

或者您可以使用SCNPhysicsContactSCNPhysicsContactDelegate來檢測與地板的碰撞,並使用它來觸發速度檢查。

+0

KVO是否有一些重要的性能收費? – ColdSteel

+0

它有一定的成本。你可以測量它來確定究竟有多少。更值得關注的是,KVO不是很Swift-y(你沒有提到你使用的語言)。我不記得SCNPhysicsContact回調,來自SCNSceneRenderer的渲染器(_:didSimulatePhysicsAtTime :)回調以及對象速度的更新順序是什麼;您可能必須在一個回調中將節點入列刪除,並在另一個回調中將其刪除。使用聯繫人委託對我來說感覺像更好的Swift風格,儘管我無法精確地闡述爲什麼。 –

+0

我正在使用 - Objective-C,我問性能,因爲我緊張的CPU - 動畫需要近13ms +沖洗和東西...我離開少於1.2毫秒 - 老實說可憐... – ColdSteel