簡體   English   中英

M_PI / Double.pi的作用是什么,為什么要使用它? Spritekit

[英]What is M_PI/Double.pi used for, and why do we use it? Spritekit

我正在使用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. 我希望將其中一個planes / SKSpriteNodes顛倒過來,所以我研究發現了這一點: PlaneBlue.zRotation = CGFloat(16.0) 同樣,當我拿走Double.pi ,它具有相同的效果,但是它只是指向其他地方。

總的來說,我有兩個問題,就是Double.pi是否與M_PI相同,但是Double.pi是使用它的新方法,或者它們是不同的。 另外,為什么我們需要使用Double.pi / M_PI?

先感謝您。

在此示例中使用Double.pi ,因為rotate(byAngle:duration:)弧度表示一個角度。 2π弧度等於一整圈,即360度。 您包含的代碼創建了一個旋轉動作,告訴飛機每3.8秒旋轉一圈。 刪除Double.pi只是使它每3.8秒旋轉一個較小的角度。

至於M_PIDouble.pi之間的區別,它們基本上是相同的。 后者是較新的,並且匹配其他類型(例如CGFloat.pi上的類似常量。 這些其他常量使您可以為其他數字類型獲取正確鍵入的π值。 M_PI始終是Double ,但CGFloat.piCGFloatFloat.piFloat ,等等。

實際上,在您的代碼中,切換到CGFloat.pi 可能會允許您刪除圍繞您的angle參數投射的CGFloat ,如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM