【问题标题】:Are multiple didBeginContact calls called simultaneously?是否同时调用了多个 didBeginContact 调用?
【发布时间】:2015-06-15 17:31:12
【问题描述】:

假设两次接触同时发生。他们的didBeginContact 函数调用会同时发生(我猜是在不同的线程中)还是一个接一个地发生?

【问题讨论】:

  • 设置断点自己找出来?
  • @rickster 如何使用断点?我说的是多线程——断点只告诉我程序在一个线程中的流程。
  • 当您遇到断点时,调试器会告诉您当前所在的线程。
  • 在你的代码中加入一些 NSLogs,看看什么时候打印出来。

标签: ios swift sprite-kit game-physics


【解决方案1】:

否 - 为场景中接触的每一对节点调用 didBeginContact。传递给它的参数是 SKPhysicsContact,其中包含对 2 个主体的引用 - bodyAbodyB - 涉及到联系人。

如果 3 个节点(例如 playerenemybomb)似乎同时相互联系,则 didBegincontact 将被调用 3 次 - 一次用于玩家/敌人联系人,一次用于玩家/bomb 联系人和一次敌人/bomb 联系人。

您提到在多个线程中检测到联系人 - 我不记得在任何地方读过这篇文章,但我认为让多个线程控制 SpriteKit 场景不是一个好主意,如果可能的话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多