【发布时间】:2014-10-22 21:57:12
【问题描述】:
我创建了一个名为chainsawHolder 的容器SKSpriteNode,它有一个名为longChainsaw 的子SKSpriteNode。我想对电锯架施加一个脉冲,这样当它移动时,它的子节点也会随之移动。我已经尝试了几件事,但我无法做到这一点。看来只有我的容器 SKSpriteNode 只能有一个physicsSize。但它的 childNode 不能有大小 - 如果有,它不会与容器节点一起移动。
我需要子节点成为物理节点,因为当它与我的英雄碰撞时,它需要调用一个函数。
当应用脉冲时,如何让我的子节点与容器节点一起移动?
代码如下:
let chainsawHolderWidth = size.width
let chainsawHolderHeight = size.height
chainsawHolder.size = CGSize(width: chainsawHolderWidth, height: chainsawHolderHeight)
chainsawHolder.anchorPoint = CGPoint(x: 0, y: 0)
chainsawHolder.position = CGPoint(x: 0, y: 0)
chainsawHolder.physicsBody = SKPhysicsBody(rectangleOfSize: chainsawHolder.size)
chainsawHolder.physicsBody?.dynamic = true
chainsawHolder.physicsBody?.categoryBitMask = bgCategory
chainsawHolder.physicsBody?.contactTestBitMask = boCategory
chainsawHolder.physicsBody?.collisionBitMask = noneCategory
//LONG CHAINSAW
let longChainsawWidth = size.width/3
let longChainsawHeight = size.height*0.20
longChainsaw.size = CGSize(width: longChainsawWidth, height: longChainsawHeight)
let textures = [SKTexture(imageNamed: "chainsaw1"), SKTexture(imageNamed: "chainsaw2")]
let animation = SKAction.animateWithTextures(textures, timePerFrame: 0.1)
let runSawAnimation = SKAction.repeatActionForever(animation)
longChainsaw.runAction(runSawAnimation)
let longChainsawPhysicsSize = CGSizeMake(longChainsawWidth - longChainsawWidth/14, longChainsawHeight - longChainsawHeight/12)
longChainsaw.physicsBody = SKPhysicsBody(rectangleOfSize: longChainsawPhysicsSize)
longChainsaw.position = CGPoint(x: size.width*0.5, y: size.height*0.5)
longChainsaw.physicsBody?.dynamic = true
longChainsaw.physicsBody?.categoryBitMask = chainsawCategory
longChainsaw.physicsBody?.contactTestBitMask = boCategory
longChainsaw.physicsBody?.collisionBitMask = noneCategory
chainsawHolder.addChild(longChainsaw)
self.addChild(chainsawHolder)
【问题讨论】:
标签: ios swift sprite-kit game-physics skphysicsbody