我需要射击"射击"从静态SKSpriteNode
到另一个动态节点。我创建了一个镜头作为精灵节点作为镜头,并将其移动到SKAction
到主精灵节点,如下所示:
let node = info["node"] as SKSpriteNode // The static node
let shot = SKSpriteNode(color: UIColor.blueColor(), size: CGSize(width:node.frame.width / 3, height: node.frame.height / 1.2))
shot.physicsBody = SKPhysicsBody(edgeLoopFromRect: shot.frame)
shot.position = node.position
shot.physicsBody?.categoryBitMask = shotMask
shot.physicsBody?.contactTestBitMask = spriteMask
shot.physicsBody?.collisionBitMask = 0
shot.physicsBody?.usesPreciseCollisionDetection = true
self.addChild(shot)
shot.runAction(SKAction.moveTo(sprite.position, duration: 1.0))
我的问题是射击在到达该点后停止。有没有办法让镜头继续沿着它的方向移动,还是有另一种方式来做我需要的东西?谢谢!
答案 0 :(得分:1)
不要使用SKAction移动镜头。而是通过直接修改镜头的位置来改变镜头的位置。
shot.position = CGPointMake(shot.position.x+1, shot.position.y);
在更新方法中运行以上操作。要加快拍摄速度,请将+1更改为您需要的任何值。显然,一旦它离开屏幕,击中目标等,你将需要从父节点中删除镜头节点......
答案 1 :(得分:0)
您需要计算从镜头的原点到其目的地的矢量。然后扩展矢量直到镜头离开屏幕,可能是通过找到单位矢量(长度为1的矢量)并将其乘以3000左右。由于您现在有一个明确的终点,您仍然可以使用SKAction。