- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在 Swift 中似乎已经弃用了矢量方法的线性重力场。这种新语言中有一堆新的 SKFieldNode,但我似乎找不到类似于线性重力的。 “方向”属性在 Swift 中甚至不可用。也许可以使用这种通用方法 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 中,向量参数使用来自 SIMD 库的 vector_float3
类型,它使用特殊的 C 编译器魔法来制作使用 SSE(在 OS X/x86 上)或 NEON(在 iOS/ARM 上)硬件加速的向量和打包好发送到 GPU。 Swift 中目前不存在这种巫术,因此任何依赖它的 ObjC API 都不会导入到 Swift 中。
目前,您可以从 ObjC 访问这些 API——在 Swift 项目中,您可以为自己制作一个 ObjC 包装函数,并在桥接 header 中将其公开给 Swift。
关于ios - 在 Swift 中创建一个线性重力场,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25558754/
我是一名优秀的程序员,十分优秀!