首页 > 解决方案 > 如何访问特定的子节点 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]
}

标签: iosswiftscenekit

解决方案


推荐阅读