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 中的碰撞检测的主要内容,如果未能解决你的问题,请参考以下文章