我实际上是想用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?
,但没有任何作用。
我会提前感谢你的帮助
答案 0 :(得分:0)
这意味着你的一个精灵被初始化为SKNodes,用于存放SKSpriteNodes。
您尝试将其向下转换为SKSpriteNode,但您不应该这样做,因为它们不打算显示任何图像。
修复方法是将它们初始化为SKSpriteNodes而不是SKNode。
来自苹果文档
SKNode类是大多数Sprite Kit的基本构建块 内容。 SKNode类不会绘制任何可视内容。它的主要 role是提供其他节点类使用的基线行为。 使用基于Sprite Kit的游戏中的所有视觉元素 预定义的SKNode子类。