如何在SpriteKit中为physicsWorld设置contactDelegate?

时间:2015-08-25 16:50:36

标签: ios swift sprite-kit swift2

我在将contactDelegate分配给self(GameScene)时遇到了一个问题。

override func didMoveToView(view: SKView)
{
    self.physicsWorld.contactDelegate = self
    /* ... */
}

不幸的是,我收到了一个错误:

  

无法将“GameScene”类型的值分配给“SKPhysicsContactDelegate”类型的值吗?

这在Xcode的早期版本中不会发生(可能是Swift 2.0中的新功能),所以即使在Apple Developer的SpriteKit文档中,它们也有相同的代码。

我如何解决这个问题?我已经尝试强迫施法

self.physicsWorld.contactDelegate = (self as! SKPhysicsContactDelegate)

但是我遇到了运行时错误(无法执行转换)。

任何人都知道如何将联系人委托给我的GameScene?

2 个答案:

答案 0 :(得分:2)

我知道在我的项目中(我假设是swift 1)你必须将游戏场景定义为SKPhysicsContact Delegate。

class GameScene: SKScene, SKPhysicsContactDelegate {

}

并将其设置为我刚才所做的委托。

self.physicsWorld.contactDelegate = self

不" as"需要运营商。

答案 1 :(得分:1)

您可能忘记在课程顶部添加SKPhysicsContactDelegate