gpt4 book ai didi

ios - 最后 90 度外的新随机数

转载 作者:行者123 更新时间:2023-11-28 11:04:37 25 4
gpt4 key购买 nike

我正在运行一个项目,使瓶子的图像旋转。就像游戏“瓶颈”一样。它实际上效果很好,但它只是经常让图像停在同一位置的方法。我想每次都从最后一个位置至少 45 度做一个新位置。我的代码看起来像这样

for _ in 1...10 {

UIView.animateWithDuration(2, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 0, options: [],
animations: { [unowned self] in

self.bottleImage.transform = CGAffineTransformMakeRotation(CGFloat(M_PI))


}){ [unowned self] (finished: Bool) in
self.bottleImage.hidden = false
}

UIView.animateWithDuration(8, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 0, options: [],
animations: { [unowned self] in

self.bottleImage.transform = CGAffineTransformMakeRotation(CGFloat(M_PI * 2))


}){ [unowned self] (finished: Bool) in
self.bottleImage.hidden = false
}
}

//Random stop point

let randomNumber: CGFloat = CGFloat(arc4random_uniform(360))

UIView.animateWithDuration(2, delay: 0, usingSpringWithDamping: 5, initialSpringVelocity: 5, options: [],
animations: { [unowned self] in

self.bottleImage.transform = CGAffineTransformMakeRotation(CGFloat(randomNumber))

}){ [unowned self] (finished: Bool) in
self.bottleImage.hidden = false
}

最终编辑

var currentPosition: CGFloat = 0.0
/*
First spins...
*/


//Random stop point
let randomNumber: CGFloat = CGFloat(arc4random_uniform(270))

currentPosition = CGFloat(Int(currentPosition + 45 + randomNumber) % 360)

UIView.animateWithDuration(1, delay: 0, usingSpringWithDamping: 5, initialSpringVelocity: 2, options: [],
animations: { [unowned self] in

self.bottleImage.transform = CGAffineTransformMakeRotation(self.currentPosition / 180 * CGFloat(M_PI))

}){ [unowned self] (finished: Bool) in
self.bottleImage.hidden = false
}

最佳答案

在我看来,每次你都想要一个与上一个位置至少成 45 度角的新位置。

您需要保存上一个角度,然后将一个介于 45 到 180 度或 -45 到 -180 度范围内的数字添加到上一个角度。 (iOS 中的角度实际上是以弧度计算的,但我使用度数是因为它更容易理解。

所以,使用这样的代码:

var angleChange = arc4random_uniform(180-45) + 45
if arc4random_uniform(2) == 0
angleChange *= -1

然后将结果转换为弧度并将更改添加到您的旧角度值。最后,将结束角度限制在 0 到 2π 的范围内(通过将 2π 添加到结果并取模 2π(使用 fmod() 函数。)

(上面的代码可能需要调整以使用正确的数据类型。)

关于ios - 最后 90 度外的新随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38807653/

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