didBegin 未检测到两个 SKSpriteNode 之间的接触

Posted

技术标签:

【中文标题】didBegin 未检测到两个 SKSpriteNode 之间的接触【英文标题】:didBegin not detecting contact between two SKSpriteNodes 【发布时间】:2020-09-10 19:08:09 【问题描述】:

在我的 didMove 函数中,我说 physicsWorld.contactDelegate = self,在类的顶部,我从 SKPhysicsContactDelegate 继承。我添加了一个 SKSpriteNode,其物理体初始化如下:

        alien.physicsBody = SKPhysicsBody(rectangleOf: alienSize)
        alien.physicsBody!.affectedByGravity = false

然后我定义了另一个节点的物理体,它以同样的方式与外星人接触。当他们接触时,这两个元素确实会相互碰撞,但由于某种原因,didBegin(_ contact: SKPhysicsContact) 没有被调用,这意味着即使我说:

    func didBegin(_ contact: SKPhysicsContact) 
        print("\n\nContact!\n\n")
    

当这两个元素接触时,什么都不会打印出来。关于我需要查看什么来尝试修复它的任何想法?

【问题讨论】:

【参考方案1】:

我还没有代表发布 cmets,所以我必须将我的想法放在答案中。您是否尝试过在实际设备上运行代码?模拟器无法从某些图像正确创建物理体存在问题。一种解决方法是针对 ios 版本 12.x 进行编译并在具有该版本 iOS 的模拟器集中运行。但是您将无法利用 13 及更高版本的 iOS 功能。

【讨论】:

以上是关于didBegin 未检测到两个 SKSpriteNode 之间的接触的主要内容,如果未能解决你的问题,请参考以下文章

如何加入两个碰撞的 SKSpriteNode

EdgeFromLoop 似乎没有调用 didBegin?

Xcode,无法运行 didBegin(_contact SKPysics)函数

未检测到 SpriteKit 碰撞

jQuery in-viewport 未检测到多个视频

未检测到 spritekit 物理碰撞