所以在我的应用程序中,你可以认为它类似于二十一点。有一副52张牌,你在牌背面重复使用相同的设计,但它有不同的牌面,如Ace Spade,2 Diamond等。
所以在我的Scenekit中,我创建了一个专门设计1张卡片的场景。然后我将在我的主场景中复制它52次。我还使用特定名称(例如Card1,Card2,Card3等)唯一标识每个父节点。
在我的View Controller中,我会在代码中对卡片进行洗牌,并填充卡片面部的图像。但是,当我尝试使用Ace Spade分配Card1时,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]
}