似乎在矢量方法中的線性引力場在Swift中已被棄用。在這種新語言中有一堆新的SKFieldNode,但我似乎無法找到類似線性引力的東西。 「方向」屬性在Swift中甚至沒有。也許它可以使用這個泛型方法customFieldWithEvaluationBlock來完成,但我不知道如何。我是SpriteKit的新手。在Swift中創建線性引力場
那麼,我們如何才能在Swift中實現相同的物理效果?
似乎在矢量方法中的線性引力場在Swift中已被棄用。在這種新語言中有一堆新的SKFieldNode,但我似乎無法找到類似線性引力的東西。 「方向」屬性在Swift中甚至沒有。也許它可以使用這個泛型方法customFieldWithEvaluationBlock來完成,但我不知道如何。我是SpriteKit的新手。在Swift中創建線性引力場
那麼,我們如何才能在Swift中實現相同的物理效果?
在斯威夫特2(Xcode中7的一部分),SIMD向量可供斯威夫特,因此API使用它們(如linearGravityFieldWithVector
,新的GameplayKit和Model I/O框架等)現在也被導入到Swift中......沒有必要的解決方法了。
let field = SKFieldNode.linearGravityFieldWithVector(float3(1,0,0))
此前... 的SKFieldNode
類方法linearGravityFieldWithVector
做到這一點,但它在斯威夫特的不可用。在ObjC中,向量參數使用SIMD庫中的vector_float3
類型,該類型使用特殊的C編譯器魔術來製作使用SSE(在OS X/x86上)或NEON(在iOS/ARM上)硬件加速並很好地發送給GPU的向量。這種voodoo目前不存在於Swift中,所以任何依賴它的ObjC API都不會被導入到Swift中。
現在,您可以從ObjC訪問這些API - 在Swift項目中,您可以使自己的ObjC包裝函數和暴露在您的橋接頭中的Swift。
如果你想直線重力適用於你可以嘗試設置physicsWorld.gravity
的所有節點,這是一個CGVector
並非所有節點。我想重力只適用於特定區域。 – Donn 2014-08-28 22:32:50
它看起來不像它已被棄用,只是...從Swift SpriteKit API中缺少。您可能需要[提交錯誤](http://bugreport.apple.com)。 – 2014-08-28 22:43:46