2016-12-24 13 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 콜백, 렌더러 (_ : didSimulatePhysicsAtTime :) 콜백, SCNSceneRenderer 콜백 및 객체 속도 업데이트에 대한 순서는 기억하지 못합니다. 하나의 콜백에서 노드를 삭제 대기열에 넣고 다른 노드에서 삭제해야 할 수 있습니다. 연락처 담당자를 사용하는 것은 나에게 더 나은 Swift 스타일처럼 느껴지지만 정확하게 이유를 분명히 말할 수는 없습니다. –

+0

Objective-C를 사용 중입니다. CPU가 너무 빡빡하기 때문에 성능에 대해 물어 보았습니다. 애니메이션은 거의 13ms + 플러시가 걸립니다. 1.2 밀리 초 미만으로 남았습니다. 솔직히 불쌍한 ... – ColdSteel