ios - 在 SpriteKit 中随着时间的推移减小 CGPath 的大小?

标签 ios swift sprite-kit

我正在制作一个游戏,我希望 Sprite 节点按照圆周运动,并且随着时间的推移,圆圈半径应该逐渐减小到零。我假设,这可以通过使用 CGPath() 制作圆形路径然后每次调用 update() 函数时将路径半径减小 1 点来完成。

代码如下:

func createOrbit() -> (CGPath) {
    let orbitPathOrigin = CGPoint(x: center.x , y: center.y)
    let orbitPathRect = CGRect(origin: orbitPathOrigin, size: orbitSize)
    let orbitPath = CGPathCreateWithEllipseInRect(orbitPathRect, nil)
    return orbitPath
}

如何引用创建的每个路径并减小它们的大小?

最佳答案

我认为最好的方法是创建一条路径并使项目像您提到的那样遵循该路径,

所以你可以让粒子遵循如下路径

var mySatellite = SKSpriteNode(color: UIColor.redColor(), size: CGSize(width: 10, height: 10))
var spinAction = SKAction.followPath(self.createOrbit(), asOffset: false, orientToPath: true, duration: 4.0)

mySatellite.runAction(spinAction)

在您的 didMoveToView 方法或类似方法中的某处设置时间操作,

var wait = SKAction.waitForDuration(4.0)
var play = SKAction.runBlock { () -> Void in
               var newPath = self.decreasedOrbit(20.0)   
               var spinAction = SKAction.followPath(newPath, asOffset: false, orientToPath: true, duration: 4.0)
           }

var waitAndPlaySeq = SKAction.sequence([wait,play])
mySatellite.runAction(waitAndPlaySeq)

AssignNewOrbit 函数为粒子分配新路径。

decreasedOrbit 功能如下,仅用于创建新的小轨道。

而且你还需要减小每个周期的轨道大小

   func decreasedOrbit(diameter : CGFloat) -> CGPath{

       var newDiameter = CGFloat(diameter - 5.0)
       var squareRect = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: newDiameter, height: newDiameter))
       var bezierPath = UIBezierPath(ovalInRect: squareRect)

       return bezierPath.CGPath
   }

希望对您有所帮助。

关于ios - 在 SpriteKit 中随着时间的推移减小 CGPath 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31376783/

相关文章:

ios - 显示键盘时 UITextView 不会滚动

ios - UIView 中的径向渐变颜色未更新

ios - 将分段控件的选择保存到 NSuserdefaults

ios - 如何在 iOS 中查找蓝牙音频设备

android - Nativescript-Vue 将数组长度传递给 SCSS 变量

swift - 障碍物随机间隙不起作用 [SpriteKit] [Swift]

ios - Xcode 错误 "failed to read asset tags: unexpected error generating result tags"

swift - SKScene 中的 subview - Swift

ios - Prefix.pch ReactiveCocoa/RACEXTScope.h 文件未找到错误

json - 将 Swift Codable 类迁移到 Realm