gpt4 book ai didi

ios - M_PI/Double.pi 有什么用,我们为什么要用它? SpriteKit

转载 作者:可可西里 更新时间:2023-11-01 00:57:17 27 4
gpt4 key购买 nike

我正在使用 swift spritekit。

嗨,我有几个关于 M_PI 的问题,这是我最近了解到的。对于我的游戏,我一直在研究旋转事物的不同方法。基本上,在我的游戏中有 2 架飞机围绕屏幕中心“飞行”。

注意:当我尝试使用 M_PI 时,Xcode 警告我使用 double.pi,我用它来替换 M_PI。这些东西是一回事吗?

  1. 我试着找出如何围绕屏幕中心旋转平面。我发现最好的方法是使它成为中心节点的子节点,然后使用以下代码行旋转中心节点:

        let OrbitCenter = SKAction.rotate(byAngle: CGFloat(-2 * Double.pi), duration: 3.8)

    当我拿走 Double.pi 时,飞机移动得慢了很多,但仍然以同样的方式旋转。为什么我们需要使用 Double.pi?

  2. 我希望其中一个平面/SKSpriteNode 上下颠倒,所以我研究并发现:PlaneBlue.zRotation = CGFloat(16.0)。同样,当我拿走 Double.pi 时,它具有相同的效果,但它只是指向其他地方。

总的来说,我的两个问题是,Double.pi 是否与 M_PI 相同,但只是 Double.pi 是使用它的新方法,还是它们不同。另外,为什么我们需要使用 Double.pi/M_PI?

提前致谢。

最佳答案

Double.pi 在此示例中使用,因为 rotate(byAngle:duration:)radians 中取一个角度. 2π 弧度等于一整圈,或 360 度。您包含的代码正在创建一个旋转 Action ,告诉飞机每 3.8 秒旋转一整圈。删除 Double.pi 只会导致它每 3.8 秒旋转一个较小的角度。

至于M_PIDouble.pi的区别,基本是一样的。后者较新,并匹配其他类型上的类似常量,例如 CGFloat.pi。这些其他常量允许您为其他数字类型获取正确键入的 π 值。 M_PI 始终是一个 Double,但是 CGFloat.pi 是一个 CGFloatFloat.pi 是一个 Float

事实上,在您的代码中,切换到 CGFloat.pi 可能 允许您删除围绕角度参数的 CGFloat 转换,例如所以:

让 OrbitCenter = SKAction.rotate(byAngle: -2 * CGFloat.pi, duration: 3.8)

关于ios - M_PI/Double.pi 有什么用,我们为什么要用它? SpriteKit ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43315038/

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