SpriteKit 中的碰撞检测

Posted

技术标签:

【中文标题】SpriteKit 中的碰撞检测【英文标题】:Collision Detection in SpriteKit 【发布时间】:2022-01-11 22:19:21 【问题描述】:

我在搞清楚如何检测物体何时与任何物体发生碰撞时遇到了一些问题,有人知道你会怎么做吗?

作为参考,我正在尝试将其合并到的项目在这里 - https://github.com/SuperbiaR/Physics-Playground

我的目标是当 Player 和 Puff 对象发生碰撞时发生一些事情

【问题讨论】:

这能回答你的问题吗? How to Detect collision in Swift, Sprite kit 【参考方案1】:

您可以将categoryBitMask 定义为ContactCategoryPlayer = 0x1 << 0

您可以将另一个节点子类化为Puff,并且它的物理体具有categoryMask 定义为ContactCategoryPuff = 0x1 << 1

步骤 1

定义独特的类别。

let ContactCategoryPlayer: UInt32 = 0x1 << 0   // bitmask is ...00000001
let ContactCategoryPuff: UInt32 = 0x1 << 1   // bitmask is ...00000010

第 2 步

分配类别。

player.physicsBody?.categoryBitMask = ContactCategoryPlayer
puff.physicsBody?.categoryBitMask = ContactCategoryPuff

第三步

分配类别。

enemy.physicsBody?.collisionBitMask = 0 
puff.physicsBody?.collisionBitMask = 0 

您可以通过委托回调调用这些碰撞处理程序:

// MARK: SKPhysicsContactDelegate
extension GameScene: SKPhysicsContactDelegate 
    func didBegin(_ contact: SKPhysicsContact) 
        print("contact!!!")
    


这里是参考。 https://medium.com/@JohnWatson/simplified-collision-handling-in-spritekit-71de9bea6302

【讨论】:

以上是关于SpriteKit 中的碰撞检测的主要内容,如果未能解决你的问题,请参考以下文章

Spritekit 碰撞检测无法正常工作

未检测到 spritekit 物理碰撞

未检测到 SpriteKit 碰撞

未检测到 SpriteKit 碰撞

SpriteKit 碰撞检测不起作用

Sprite Kit中的碰撞检测未检测到碰撞