似乎在Swift中已经弃用了带矢量方法的线性重力场。在这种新语言中有一堆新的SKFieldNode,但我似乎找不到类似线性引力的那种。 Swift中甚至没有“方向”属性。也许可以使用这个泛型方法customFieldWithEvaluationBlock完成,但我不知道如何。我是SpriteKit的新手。
那么,我们怎样才能在Swift中产生相同的物理效果?
答案 0 :(得分:4)
在Swift 2(Xcode 7的一部分)中,SIMD向量可供Swift使用,因此使用它们的API(例如linearGravityFieldWithVector
,新的GameplayKit和Model I/O框架等等)现在也被导入Swift ......不再需要解决方法了。
let field = SKFieldNode.linearGravityFieldWithVector(float3(1,0,0))
...以前
SKFieldNode
类方法linearGravityFieldWithVector
执行此操作,但它在Swift中不可用。在ObjC中,vector参数使用来自SIMD库的vector_float3
类型,它使用特殊的C编译器魔法来制作使用SSE(在OS X / x86上)或NEON(在iOS / ARM上)硬件加速的矢量并很好地打包发送到GPU。这种伏都教目前在Swift中并不存在,因此任何依赖它的ObjC API都不会导入Swift。
现在,您可以从ObjC访问这些API - 在Swift项目中,您可以使自己成为一个小的ObjC包装函数,并在桥接头中将其暴露给Swift。
答案 1 :(得分:0)
如果您想对所有节点应用线性重力,可以尝试设置physicsWorld.gravity
,这是CGVector