Swift 1.2 / Xcode 6.3的编译器问题

时间:2015-05-14 15:12:46

标签: swift sprite-kit

我实际上是想用swift创建一个游戏,我有一个我无法解决它的错误:

CollisionWithBullet(firstBody.node as SKSpriteNode, Bullet: secondBody.node as SKSpriteNode)
   }
    else if ((firstBody.categoryBitMask == PhysicsCategory.Enemy) && (secondBody.categoryBitMask == PhysicsCategory.PLayer) ||
        (firstBody.categoryBitMask == PhysicsCategory.PLayer) && (secondBody.categoryBitMask == PhysicsCategory.Enemy)){

            CollisionWithPerson(firstBody.node as SKSpriteNode , Person: secondBody.node as SKSpriteNode)

            CollisionWithBullet(firstBody.node as SKSpriteNode, Bullet: secondBody.node as SKSpriteNode)

我收到以下消息:

  

“SKNode?不能转换为'SKSpriteNode';你的意思是用'as!'强迫垂头丧气。

我在几个网站上搜索了解决方案,我尝试将as更改为as!as?,但没有任何作用。

我会提前感谢你的帮助

1 个答案:

答案 0 :(得分:0)

这意味着你的一个精灵被初始化为SKNodes,用于存放SKSpriteNodes。

您尝试将其向下转换为SKSpriteNode,但您不应该这样做,因为它们不打算显示任何图像。

修复方法是将它们初始化为SKSpriteNodes而不是SKNode。

来自苹果文档

  

SKNode类是大多数Sprite Kit的基本构建块   内容。 SKNode类不会绘制任何可视内容。它的主要   role是提供其他节点类使用的基线行为。   使用基于Sprite Kit的游戏中的所有视觉元素   预定义的SKNode子类。