2016-02-24 45 views
0

根據SceneKit API,作爲SCNNode屬性的歐拉角是SCNVector3。和SCNVector3是{ CGFloat x, y, z: }。但是,當我嘗試將一個CGFloat分配給一個節點的eulerAngle屬性時,Xcode聲稱我試圖將其分配爲鍵入'Float'。這裏有一個片段從我panGesture處理程序:是SceneKit eulerAngles花車還是CGFloats?

baseNode.eulerAngles.x = newAngleX 

我可以通過鑄塑浮標避免這一點,但我很好奇,特別是因爲SCNVector3似乎仍然接受CGFloats。

+2

無論出於何種原因,它是iOS上的「Float」和OS X上的「CGFloat」。 –

回答

1

你說得對,文檔是錯誤的。直接從SceneKit/SceneKitTypes.h:

typedef struct SCNVector3 { 
    float x, y, z; 
} SCNVector3; 

其中,除其他事項外,意味着他們不管目標的32位,不像CGFloat秒。因此,儘管命名相似,但它不僅僅是一個typedef問題--Swift是正確的想要明確演員。