[英]Why view disappear after rotation of M_PI*0.25 (but not by M_PI*0.26)
[英]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。 這些東西是同一回事嗎?
我試圖弄清楚如何圍繞屏幕中心旋轉平面。 我發現,執行此操作的最佳方法是使用以下代碼行使孩子成為中心節點,然后旋轉中心節點:
let OrbitCenter = SKAction.rotate(byAngle: CGFloat(-2 * Double.pi), duration: 3.8)
當我拿走Double.pi時,飛機的移動速度慢了很多,但仍然以相同的方式旋轉。 為什么我們需要使用Double.pi?
我希望將其中一個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_PI
和Double.pi
之間的區別,它們基本上是相同的。 后者是較新的,並且匹配其他類型(例如CGFloat.pi
上的類似常量。 這些其他常量使您可以為其他數字類型獲取正確鍵入的π值。 M_PI
始終是Double
,但CGFloat.pi
是CGFloat
, Float.pi
是Float
,等等。
實際上,在您的代碼中,切換到CGFloat.pi
可能會允許您刪除圍繞您的angle參數投射的CGFloat
,如下所示:
let OrbitCenter = SKAction.rotate(byAngle: -2 * CGFloat.pi, duration: 3.8)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.