W1n*_*0om 7 ios scenekit sprite-kit swift
我正在尝试使用平面几何体的SCNNode,它在其中显示2d文本.我是通过将SKLabelNode设置为几何体的材料来实现的(从此处获取)
这是我的代码:
let label = SKLabelNode(text: "Test Text 1")
label.fontColor = .white
label.fontName = UIFont.systemFont(ofSize: 32).fontName
label.fontSize = 32
let backgroundRectShape = SKShapeNode(rect: CGRect(origin: .zero, size: label.frame.size))
backgroundRectShape.fillColor = .orange
backgroundRectShape.addChild(label)
label.position = CGPoint(x: backgroundRectShape.frame.width / 2, y: 0)
let skScene = SKScene(size: label.frame.size)
skScene.addChild(backgroundRectShape)
backgroundRectShape.position = .zero
let plane = SCNPlane(width: label.frame.width / 10, height: label.frame.height / 10)
plane.firstMaterial?.diffuse.contents = skScene
let node = SCNNode(geometry: plane)
scene.rootNode.addChildNode(node)
Run Code Online (Sandbox Code Playgroud)
SCNNode肯定是正确对齐而不是旋转,因为当我将图像设置为素材内容时,一切正常:

我只是无法理解为什么会这样.最简单的解决方案是将SKLabelNode's 设置yScale为-1,但如果不理解默认情况下它出现倒置的原因,我不想这样做.
plane.firstMaterial?.diffuse.contentsTransform = SCNMatrix4Translate(SCNMatrix4MakeScale(1, -1, 1), 0, 1, 0)
Run Code Online (Sandbox Code Playgroud)
SpriteKit这看起来是一个错误,或者是/ SceneKitframework的众多限制之一。
我认为由于 iOS 坐标系的原点,SCNMaterial 的内容错误地显示为颠倒。
Y-axis但是,您应该更好地使用.SCNNodecontentsTransform的实例属性来镜像纹理,而不是缩放 SCNNode 本身SCNMaterial。就像这样:
material.diffuse.contentsTransform = SCNMatrix4MakeScale(1, -1, 1)
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
448 次 |
| 最近记录: |