tha*_*har 1 xcode sprite-kit swift3
我正在使用 SpriteKit 构建我的第一个游戏,用 Swift 3 编写。
我已经尝试了几个小时来实现这种“获胜明星效应”,但还没有任何可接受的结果:/
我正在寻找的效果在此视频中演示:https://youtu.be/9CeK5_G8T9E
添加一颗或多颗星不是问题;问题是让它们通过不同的路径向不同的方向移动到同一位置,就像在这个视频示例中所做的那样。
希望您的帮助引导我走向正确的方向。
任何解决方案、教程、示例等都非常受欢迎。
谢谢你的时间。
花了一段时间,但这里有一些东西:
import SpriteKit
class GameScene: SKScene {
var sprite = SKSpriteNode()
override func didMove(to view: SKView) {
for _ in 1...15 {
spawnsprite()
}
}
func spawnsprite() {
sprite = SKSpriteNode(color: SKColor.yellow, size: CGSize(width: 50, height: 50))
sprite.position = CGPoint(x: (-size.width/2)+50, y: (-size.height/2)+50)
addChild(sprite)
let destination = CGPoint(x: (size.width/2)-50, y: (size.height/2)-50)
let path = createCurvedPath(from: sprite.position, to: destination, varyingBy: 500)
let squareSpeed = CGFloat(arc4random_uniform(600)) + 200
let moveAction = SKAction.follow(path, asOffset: false, orientToPath: false, speed: squareSpeed)
let rotateAction = SKAction.repeatForever(SKAction.rotate(byAngle: 2 * CGFloat.pi, duration: 2))
sprite.run(SKAction.group([moveAction, rotateAction]))
}
func createCurvedPath(from start: CGPoint, to destination: CGPoint, varyingBy offset: UInt32) -> CGMutablePath {
let pathToMove = CGMutablePath()
pathToMove.move(to: start)
let controlPoint = CGPoint(x: CGFloat(arc4random_uniform(offset)) - CGFloat(offset/2),
y: CGFloat(arc4random_uniform(offset)) - CGFloat(offset/2))
pathToMove.addQuadCurve(to: destination, control: controlPoint)
return pathToMove
}
override func update(_ currentTime: TimeInterval) {
// Called before each frame is rendered
}
}
Run Code Online (Sandbox Code Playgroud)
有很多方法可以让这个变得更好(例如,子类 SKSpriteNode 并使节点遵循精灵本身的属性的路径),但它说明了原理。
也可以使用 SKEmitter 来完成。
| 归档时间: |
|
| 查看次数: |
1266 次 |
| 最近记录: |