如何检查一个 sknode 是不是触及另一个

Posted

技术标签:

【中文标题】如何检查一个 sknode 是不是触及另一个【英文标题】:How to check if one sknode touched another如何检查一个 sknode 是否触及另一个 【发布时间】:2018-02-11 07:32:35 【问题描述】:

我正在制作一个游戏,其中一个 SKSpriteNode 需要接触另一个 SKSpriteNode 才能击败对手。

 func intersects(node: SKSpriteNode) -> Bool 
            if ball.intersects(ygB) == true
                ylicount = ylicount - 1
                yourlivescount.text = "\(ylicount)"
                if ylicount == 0
                    self.view!.window!.rootViewController!.performSegue(withIdentifier: "GameOverViewController", sender: self)
                
            else if ball.intersects(egB) == true
                   elicount = elicount - 1;

                  enemylivescount.text = "\(elicount)"
                    if elicount == 0
                        levelcount += 1
                        lccalc += 1
                        ball.physicsBody?.restitution =  (ball.physicsBody?.restitution)! - 0.000065416191
                        ep.run(SKAction.moveTo(x: ball.position.x, duration: 0.5 - (lccalc * 0.00001916151134)))
                        elicount += 3
                        ball.position.x = 0
                        ball.position.y = 0
                    


本质上,有两个目标:yg 和 eg。 ygB 是 yg 周围不可见的 SKNode,egB 与 eg 相同。如果球与 ygB 或 egB 相交,代码应该会采取相应的行动

我做错了什么?

【问题讨论】:

【参考方案1】:

给要相互接触的两个节点一个 SKPhyiscs body .dynamic。其次,使用位掩码设置碰撞检测。 https://developer.apple.com/documentation/spritekit/skphysicsbody https://developer.apple.com/documentation/spritekit/skphysicscontactdelegate

【讨论】:

以上是关于如何检查一个 sknode 是不是触及另一个的主要内容,如果未能解决你的问题,请参考以下文章

目标 C - 如何在触摸第一个 SKnode 时禁用第二个 Sknode 上的触摸

如何检查一个游戏对象是不是可以看到另一个?

如何检查一个数组是不是包含另一个数组的任何元素

如何检查一个音频是不是出现在另一个?

如何检查向量的所有元素是不是在 Eigen c++ 中的另一个向量中?

如何检查同一元素上是不是存在另一个指令