我将一些Objective-C代码转换为
Swift代码,我有以下问题:
@H_502_28@
好,目标C代码是
SCNNode *textNode = [SCNNode nodeWithGeometry:text]; textNode.transform = CATransform3DInvert(self.chartNode.worldTransform);
这是我尝试的转换代码:
let textNode = SCNNode(geometry: text) textNode.transform = CATransform3DInvert(self.chartNode.worldTransform)
但是,我收到一个错误:’SCNMatrix4不能转换为CATransform3D’
我认识到CATransform3DInvert采用CATransform3D类型的参数,而包含的参数类型为SCNMatrix4.
我尝试了以下的尝试:
textNode.transform = CATransform3DInvert(CATransform3D(self.chartNode.worldTransform))
但这不行.
然后我发现CATransform3D和SCNMatrix4都是结构体,我不确定如何从一个结构转换为另一个结构(或者即使可以在Swift中的结构之间转换)
也许还有一个更简单的方法?
任何帮助将不胜感激 – 谢谢.
Airspeed Velocity提供的链接有一个很好的解释,很容易转换为Swift(实际上是相同的).
CATransform3D等是基于Mac OS X,不适用于iOS – 而是使用iOS SCNMatrix4等.
在链接的帖子 – 头文件中,您可以找到使用的类型为SceneKitTypes.h – 如果要在github上查找副本:https://github.com/andymatuschak/Khan-Academy-Offer-Acceptance-Toy/blob/master/§/SceneKitTypes.h
我使用SCNMatrix4Invert作为上面提到的rintaro,它的工作原理.
那么Swift代码现在是:
let textNode = SCNNode(geometry: text) textNode.transform = SCNMatrix4Invert(self.chartNode.worldTransform)