ios - 如何访问特定的子节点 Scenekit
问题描述
所以在我的应用程序中,你可以认为它类似于二十一点。一副 52 张牌,你在牌的背面重复使用相同的设计,但它有不同的牌面,如 Ace Spade、2 Diamond 等。
所以在我的 Scenekit 中,我创建了一个场景来专门设计 1 张卡片。然后我将在我的主要场景中复制它 52 次。我还使用特定名称唯一标识每个单独的父节点,例如 Card1、Card2、Card3 等。
在我的视图控制器中,我在代码中执行洗牌操作,并填充卡片面的图像。但是,当我尝试将 Card1 分配给 Ace Spade 时,其余 51 张卡也分配给 Ace Spade。
CardScene:包含单张卡片,正面是普通的,但背面是设计的。
Player1Scene:将 CardScene 添加到这个场景中,并复制它,因为我有超过 2 张卡片。在这个场景中,我将我的身份命名为 Player1MyCard1、Player1MyCard2 等。
MainScene:包含杂项,包括 Player1Scene。您在下面看到的代码是在这个场景中完成的。
问题
我似乎无法将 Card1 与 Ace Spade 唯一分配,将 Card2 与其他卡面分配。我面临的是每张牌面都分配有 Ace Spade。下面是我尝试将特定面孔分配给特定卡片的代码。
func SetupNodes(){
player1MyCard1 = scene.rootNode.childNode(withName: "Player1MyCard1", recursively: true)!
print(player1MyCard1.name)
cardFace = player1MyCard1.childNode(withName: "cardFace", recursively: true)!
let material = SCNMaterial()
material.diffuse.contents = UIImage(named: "1Thousand")
material.locksAmbientWithDiffuse = true
let whiteMaterial = SCNMaterial()
whiteMaterial.diffuse.contents = UIColor.white
whiteMaterial.locksAmbientWithDiffuse = true
cardFace.geometry?.materials = [material, whiteMaterial, whiteMaterial, whiteMaterial, whiteMaterial, whiteMaterial]
}
解决方案
推荐阅读
- javascript - 尝试导入 Vue 组件以使用 Ava 对其进行测试时出现意外令牌
- python - celery 工人可用的 celery 定期任务数据
- c# - 无法打开到 SQL Server 的 SQL 连接:找不到网络路径
- python - 使用字典进行泛化
- ruby-on-rails - 未定义的方法“拒绝”#
- node.js - npm run 在哪里寻找脚本?
- java - 如何通过在一个类文件中编辑一些硬编码的 Key 来重新编译 Java 程序?
- html - 如何使用css在图像周围创建不对称边框?
- blockchain - 如果一方可以从之前的交易中访问该状态,那么状态的变化是否对未参与交易的一方可见?
- ruby-on-rails - 对象和计算的总和