首页 文章

在 SpriteKit 中射击“镜头”

提问于
浏览
0

我需要从静态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 回答

  • 1

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

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

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

  • 0

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

相关问题