2016-12-24 4 views
0

SceneKit Есть ли способ получить уведомление, когда dynamicBody находится в состоянии покоя? Я хочу удалить dynamicBody, когда он закончен, чтобы упасть на землю и полностью перестал двигаться. Я предполагаю, что у меня будет достаточно большого количества таких элементов, поэтому я хотел бы использовать что-то событие, а не перебирать все bodies и проверять их скорости ?SceneKit SCNPhysicsBody получает уведомление о поколении

ответ

1

Вы можете использовать наблюдение за ключевыми значениями на свойстве isResting. См. Is key-value observation (KVO) available in Swift?.

Или вы можете использовать SCNPhysicsContact и SCNPhysicsContactDelegate для обнаружения столкновений с полом и использовать это для запуска проверки скорости.

+0

Имеет ли KVO значительную плату за проезд? – ColdSteel

+0

Это имеет некоторую стоимость. Вы можете измерить его, чтобы точно узнать, сколько. Еще одна проблема заключается в том, что KVO не очень Swift-y (вы не указали язык, который используете). Я не помню, как выглядит последовательность вызовов SCNPhysicsContact, обратный вызов renderer (_: didSimulatePhysicsAtTime :) из SCNSceneRenderer и обновление скоростей объектов; вам может потребоваться присвоить узел для удаления в одном обратном вызове и удалить его в другом. Использование делегата-участника чувствует себя как стиль Swift для меня, хотя я не могу точно сформулировать, почему. –

+0

Я использую - Objective-C, я спросил о производительности, потому что я напряжен на процессоре - анимации занимают почти 13 мс + флеш и прочее ... Я оставил меньше 1,2 мс - честно Патетический ... – ColdSteel

Смежные вопросы