ios - 如何填充 SCNBox 的内部
问题描述
我正在尝试使用 SceneKit 并尝试用它制作迷宫风格的游戏。但是,其中一个问题是,当您在盒子(管、球等)内移动时,盒子的投影消失了。
我已经多次阅读文档,我要么不匹配正确的措辞,要么不在那里。
你将如何填充一个盒子的内容,以便当你穿过它时你会在黑暗中?
谢谢!
解决方案
AnSCNMaterial
具有以下isDoubleSided
属性:
一个布尔值,用于确定 SceneKit 是否应渲染表面的正面和背面。
默认情况下,这false
意味着您的内容将仅显示在一侧,例如外侧。
如果将此属性的值更改为 YES,SceneKit 会渲染每个多边形的正面和背面。
因此,双方的渲染示例可以这样实现:
func createBoxNode(){
//1. Create An SCNNode With An SCNBox Geometry
let boxNode = SCNNode(geometry: SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0))
//2. Set The Colour Of All Sides To Cyan
boxNode.geometry?.firstMaterial?.diffuse.contents = UIColor.cyan
//3. Enusre That Both Sides Are Rendered
boxNode.geometry?.firstMaterial?.isDoubleSided = true
//4. Place Our BoxNode & Add It To The Hierachy
boxNode.position = SCNVector3(0, 0, -1.5)
self.augmentedRealityView?.scene.rootNode.addChildNode(boxNode)
}
希望能帮助到你...
推荐阅读
- html - Yii2:如何在actionColumn中传递数据列?
- c# - 从另一个类运行方法以将列表框滚动到底部
- javascript - 与异步等待一起使用时在 catch 块中得到错误的错误响应
- javascript - 我怎么能用jquery做scrolltop?
- c# - 将对象列表传递给控制器
- sql - SQL 将表连接到自身
- python - 我的代码出现超出范围错误,请参阅下面的详细信息
- python - 在 Python 中只读文件中的阿拉伯文本
- javascript - 是否有另一种方法可以使用 javascript 函数为 HTML 属性编写更简洁的代码?
- vue.js - 在 vue 中编辑任务