2015-06-15 2 views
0

Говорите, что два контакта происходят в одно и то же время. Будут ли их вызовы функций didBeginContact происходить в одно и то же время (в разных потоках, я думаю), или это произойдет после другого?Вызов вызываемых одновременно нескольких вызововBeginContact?

+2

Установите контрольную точку и узнайте сами? – rickster

+0

@ rickster Как использовать точки останова? Я говорю о нескольких потоках - точки останова только рассказывают мне о потоке программы в одном потоке. – dfgdfg

+0

Когда вы нажимаете точку останова, отладчик сообщает вам, в какой поток вы находитесь. – rickster

ответ

0

No - didBeginContact вызывается для каждой пары узлов, которые контактируют в вашей сцене. Переданный ему параметр - SKPhysicsContact, который содержит ссылки на 2 тела - bodyA и bodyB - участвует в контакте.

Если 3 узлов (например, player, enemy и bomb) появляются в контакте друг с другом одновременно, то didBegincontact будет называться 3 раза - один раз для вражеского контакта игрока / один раз для бомбы контакта игрока / и один раз для врага / контакт с бомбой.

Вы упомянули, что контакты обнаруживаются в нескольких потоках - я не могу запомнить это где-нибудь, но я не думаю, что наличие нескольких потоков, контролирующих сцену SpriteKit, является хорошей идеей, если это даже возможно.

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