如何访问特定的子节点Scenekit

时间:2018-06-14 04:11:37

标签: ios swift scenekit

所以在我的应用程序中,你可以认为它类似于二十一点。有一副52张牌,你在牌背面重复使用相同的设计,但它有不同的牌面,如Ace Spade,2 Diamond等。

所以在我的Scenekit中,我创建了一个专门设计1张卡片的场景。然后我将在我的主场景中复制它52次。我还使用特定名称(例如Card1,Card2,Card3等)唯一标识每个父节点。

在我的View Controller中,我会在代码中对卡片进行洗牌,并填充卡片面部的图像。但是,当我尝试使用Ace Spade分配Card1时,51张卡中的其余部分也分配了Ace Spade。

enter image description here

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]
}

0 个答案:

没有答案