gpt4 book ai didi

ios - 如何在 Swift 中更改 SKSpriteNode 的半径?

转载 作者:行者123 更新时间:2023-11-30 13:58:29 25 4
gpt4 key购买 nike

我需要创建一个从屏幕中间开始的半径很小的圆,它从中心逐渐变大。如果圆圈是 SKSpriteNode ,有什么办法可以做到这一点吗?想法是增加半径,而不增加行程等其他特性。

到目前为止:

func randomCircle(){
let RandomCircleShape = SKShapeNode(circleOfRadius: 1)
RandomCircleShape.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame))
RandomCircleShape.strokeColor = randomColor()
RandomCircleShape.lineWidth = 2
self.addChild(RandomCircleShape)
}

最佳答案

这是实现扩大圆并保持其线宽的一种方法。向您的函数添加一个半径参数并让它返回一个 SKShapeNode。另外,将节点和半径的属性添加到您的 GameScene 类中:

var randomCircle: SKShapeNode?
var currentRadius: CGFloat = 1

func makeRandomCircle(radius: CGFloat) -> SKShapeNode {
let RandomCircleShape = SKShapeNode(circleOfRadius: radius)
RandomCircleShape.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame))
RandomCircleShape.strokeColor = UIColor.redColor()
RandomCircleShape.lineWidth = 2
return RandomCircleShape
}

然后通过在主线程上添加和删除节点时随时间改变半径来创建扩展效果:

var i = 0
while i < 300 {
let delay = 0.001 * Double(i) * Double(NSEC_PER_SEC)
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
dispatch_after(time, dispatch_get_main_queue()) {
self.currentRadius += 0.25
self.randomCircle!.removeFromParent()
self.randomCircle = self.makeRandomCircle(self.currentRadius)
self.addChild(self.randomCircle!)
}
i++
}

此代码可以放置在您希望发生效果的位置。

结果的 GIF:

enter image description here

关于ios - 如何在 Swift 中更改 SKSpriteNode 的半径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33293764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com