射击"射击"在SpriteKit中

时间:2015-03-24 13:16:36

标签: ios swift sprite-kit skspritenode

我需要射击"射击"从静态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))

我的问题是射击在到达该点后停止。有没有办法让镜头继续沿着它的方向移动,还是有另一种方式来做我需要的东西?谢谢!

2 个答案:

答案 0 :(得分:1)

不要使用SKAction移动镜头。而是通过直接修改镜头的位置来改变镜头的位置。

shot.position = CGPointMake(shot.position.x+1, shot.position.y);

在更新方法中运行以上操作。要加快拍摄速度,请将+1更改为您需要的任何值。显然,一旦它离开屏幕,击中目标等,你将需要从父节点中删除镜头节点......

答案 1 :(得分:0)

您需要计算从镜头的原点到其目的地的矢量。然后扩展矢量直到镜头离开屏幕,可能是通过找到单位矢量(长度为1的矢量)并将其乘以3000左右。由于您现在有一个明确的终点,您仍然可以使用SKAction。