如何在SpriteKit中创建行波

问题描述 投票:1回答:1

如何在Swift SpriteKit中创建像这样的行波的视觉效果?

teKIT

我正在使用SKAction的扩展名,该扩展名在节点中执行振荡运动,但是我仍然不知道如何创建轨迹。我虽然创建了副本,但是没有用。

extension SKAction {
    static func oscillation(scene: SKScene, amplitude a: CGFloat, timePeriod t: CGFloat, midPoint: CGPoint) -> SKAction {
        let action = SKAction.customAction(withDuration: Double(t)) { node, currentTime in
            let displacement = a * sin(2 * .pi * currentTime / t)

            node.position.y = midPoint.y + displacement

            let copy = node.copy() as! SKSpriteNode

            copy.position.x = node.position.x
            copy.position.y = node.position.y

            scene.addChild(copy)
        }

        return action
    }
}

class GameScene: SKScene {
    override func didMoveToView(view: SKView) {
        let node = SKSpriteNode(color: UIColor.greenColor(), size: CGSize(width: 50, height: 50))
        node.position = CGPoint(x: 25, y: size.height / 2)
        self.addChild(node)

        let oscillate = SKAction.oscillation(amplitude: 200, timePeriod: 1, midPoint: node.position)
        node.runAction(SKAction.repeatActionForever(oscillate))
        node.runAction(SKAction.moveByX(size.width, y: 0, duration: 5))
    }
}
swift sprite-kit drawing
1个回答
0
投票

我会尝试将粒子发射器连接到移动的节点。可以将其设置为足够快地产生点状粒子,以使其重叠并形成一条线。粒子将以恒定的速度向左移动,没有变化或褪色。将计数设置得足够高,以使最老的粒子消失之前不会出现。如果您不需要实线,则可以降低发射器速率,并用虚线表示行波。粒子发射器中有很多选项,因此,如果适合您的项目,则可以使用这些设置来获得其他效果。

© www.soinside.com 2019 - 2024. All rights reserved.