在Swift中创建线性重力场

似乎在Swift中已经弃用了带向量法的线性引力场。 在这种新语言中有一堆新的SKFieldNode,但我似乎找不到类似于线性引力的那种。 Swift中甚至没有“方向”属性。 也许可以使用这个generics方法customFieldWithEvaluationBlock完成,但我不知道如何。 我是SpriteKit的新手。

那么,我们怎样才能在Swift中产生相同的物理效果呢?

在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。

如果你想对所有节点应用线性引力,你可以尝试设置physicsWorld.gravity ,它是一个CGVector