Xcode,无法运行 didBegin(_contact SKPysics)函数
Posted
技术标签:
【中文标题】Xcode,无法运行 didBegin(_contact SKPysics)函数【英文标题】:Xcode, Unable to run the didBegin(_contact SKPysics) function 【发布时间】:2020-08-26 17:44:08 【问题描述】:class GameScene: SKScene
let player = SKSpriteNode(imageNamed: "spaceship")
struct PhysicsCategories
static let None: UInt32 = 1
static let Player: UInt32 = 0b1
static let Obsticles: UInt32 = 0b10
static let Diamond: UInt32 = 0b100
func didBegin(_ contact: SKPhysicsContact)
var body1 = SKPhysicsBody()
var body2 = SKPhysicsBody()
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask
body1 = contact.bodyA
body2 = contact.bodyB
else
body1 = contact.bodyB
body2 = contact.bodyA
if body1.categoryBitMask == PhysicsCategories.Player && body2.categoryBitMask == PhysicsCategories.Obsticles
body1.node?.removeFromParent()
body2.node?.removeFromParent()
我想在钻石与玩家接触时将其移除,并在玩家与障碍物接触时移除它。 目前我无法注册他们之间的联系 我目前使用 Xcode 9.4.1 版。如果我将应用程序更新为,问题是否仍然存在
【问题讨论】:
【参考方案1】:你在这里遗漏了很多东西(除非你有很多你没有显示的代码):
-
接触只发生在物理实体之间,你没有任何接触
您的班级不是 SKPhysicsContactDelegate,而且您还没有将自己设为物理联系人代理。
您尚未定义希望您的代码收到通知的联系人。默认情况下,所有物理实体会相互“反弹”(碰撞),但当任何实体接触(接触)时,您不会收到通知。
我在这里写了更多细节:How to Detect collision in Swift, Sprite kit
【讨论】:
以上是关于Xcode,无法运行 didBegin(_contact SKPysics)函数的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 运行时错误无法加载“_IBBrokenImage_”
didBegin 未检测到两个 SKSpriteNode 之间的接触