我想要达到的目的是使对象(物理体)的形状与纹理完全一致,以便将来只能点击纹理(而不是透明层)。
let fireLayer = SKSpriteNode(imageNamed: fireImage)
fireLayer.anchorPoint = CGPointMake(1, 0)
fireLayer.position = CGPointMake(size.width, 0)
fireLayer.zPosition = Layer.Z4st
var firedown = SKAction.moveToY(-200, duration: 0)
var fireup1 = SKAction.moveToY(10, duration: 1.2)
var fireup2 = SKAction.moveToY(0, duration: 0.2)
在这里,我试图创造一个身体,以及#34;切断"来自节点的所需对象。
fireLayer.physicsBody = SKPhysicsBody(texture: fireLayer, size: fireLayer.texture!.size())
现在,我在这里得到一个错误"额外的争论' size'在电话" ...虽然SKPhysicalBody有两个参数:纹理和大小。
fireLayer.name = "fireNode"
fireLayer.runAction(SKAction.sequence([firedown, wait1, fireup1, fireup2]))
addChild(fireLayer)
我做错了什么? 提前谢谢!
答案 0 :(得分:0)
此错误具有误导性。您的问题实际上是第一个参数texture: fireLayer
。您需要设置SKTexture
而不是SKSpriteNode
。
此外,您应该更改初始化SKSpriteNode并添加SKTexture的方式:
let fireLayerTexture = SKTexture(imageNamed: fireImage)
而不是:
let fireLayer = SKSpriteNode(texture: fireLayerTexture)
在你做完之后,你可以像这样初始化SKPhysicsBody
:
fireLayer.physicsBody = SKPhysicsBody(texture: fireLayerTexture, size: fireLayer.texture!.size())