gpt4 book ai didi

swift - 如何将两个或多个 SCNGeometry/SCNNode 合并为一个

转载 作者:搜寻专家 更新时间:2023-10-31 22:32:53 25 4
gpt4 key购买 nike

好像我想通过组合一些 SCNBox 和 SCNPyramid 等来创建一些自定义形状,我可以通过设置正确的位置和几何形状将它们放在一起。然而我就是找不到一种方法将它们组合成一个可以在物理世界中修改或 react 的单元。下面的代码我想创建一个简单的房子形状 SCNNode,我希望节点在受到任何碰撞和重力影响时相互连接。谁能给点提示?

let boxGeo = SCNBox(width: 5, height: 5, length: 5, chamferRadius: 0)
boxGeo.firstMaterial?.diffuse.contents = UIColor.blueColor()

let box = SCNNode(geometry: boxGeo)
box.position = SCNVector3Make(0, -2.5, 0)
scene.rootNode.addChildNode(box)

let pyramidGeo = SCNPyramid(width: 7, height: 7, length: 7)
pyramidGeo.firstMaterial?.diffuse.contents = UIColor.greenColor()

let pyramid = SCNNode(geometry: pyramidGeo)
pyramid.position = SCNVector3Make(0, 0, 0)
scene.rootNode.addChildNode(pyramid)

enter image description here

最佳答案

创建一个容器节点,只是一个没有任何几何体的空节点。我们称它为“houseNode”,因为这就是您正在构建的样子。

let houseNode = SCNNode()

现在让你的其他两个节点成为它的子节点。

houseNode.addChildNode(pyramid)
houseNode.addChildNode(box)

现在,只要您想对两个组合节点进行操作,就可以随时使用容器节点。

编辑:您可以通过枚举对容器中对象的几何形状进行更改:

houseNode.enumerateChildNodesUsingBlock({
node, stop in
// change the color of all the children
node.geometry?.firstMaterial?.diffuse.contents = UIColor.purpleColor()
// I'm not sure on this next one, I've yet to use "physics".
houseNode.physicsBody?.affectedByGravity = true
})

关于swift - 如何将两个或多个 SCNGeometry/SCNNode 合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36172987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com