Swift 中似乎已弃用矢量方法的线性重力场。这种新语言中有一堆新的 SKFieldNode,但我似乎找不到一个类似于线性重力的。属性“direction”在 Swift 中甚至不可用。也许可以使用这个通用方法 customFieldWithEvaluationBlock 来完成,但我不确定如何完成。我是 SpriteKit 的新手。
那么,我们怎样才能在 Swift 中做出同样的物理效果呢?
在 Swift 2(Xcode 7 的一部分)中,SIMD 向量可用于 Swift,因此使用它们的 API(例如linearGravityFieldWithVector https://developer.apple.com/library/prerelease/ios/documentation/SpriteKit/Reference/SKFieldNode_Ref/index.html#//apple_ref/occ/clm/SKFieldNode/linearGravityFieldWithVector:, 新的游戏套件 https://developer.apple.com/library/prerelease/ios/documentation/GameplayKit/Reference/GameplayKit_Framework/index.html#//apple_ref/doc/uid/TP40015199 and 型号输入/输出 https://developer.apple.com/library/prerelease/ios/documentation/ModelIO/Reference/ModelIO_Framework/index.html#//apple_ref/doc/uid/TP40015421框架等)现在也导入到 Swift 中......不再需要解决方法。
let field = SKFieldNode.linearGravityFieldWithVector(float3(1,0,0))
之前...
这SKFieldNode
类方法linearGravityFieldWithVector
这样做,但它在 Swift 中不可用。在 ObjC 向量参数中使用vector_float3
来自 SIMD 库的类型,该库使用特殊的 C 编译器魔法来生成使用 SSE(在 OS X / x86 上)或 NEON(在 iOS / ARM 上)硬件加速的向量,并很好地打包以发送到 GPU。目前 Swift 中不存在这种 voodoo,因此任何依赖它的 ObjC API 都不会导入到 Swift 中。
现在,您可以从 ObjC 访问这些 API——在 Swift 项目中,您可以为自己创建一个小的 ObjC 包装函数,并在桥接标头中将其公开给 Swift。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)