Swift 4, Xcode 10 - Доступ к дочернему элементу определенного SKReferenceNode, когда в сцене более одного (с дочерними элементами с одинаковыми именами) - PullRequest
0 голосов
/ 16 декабря 2018

Пример кода, который у меня есть (очевидно, что это псевдокод)

Как получить доступ к определенным частям тела символов (в SKReferenceNodes), чтобы я мог изменять / перемещать / анимировать их по отдельности?

loop through results from db to add all characters {

    let container = SKSpriteNode()
    container.name = "container\(character[ID])"
    addChild(container)

    let characterRig = SKReferenceNode(fileNamed: "RigCharacter")
    container.addChild(characterRig!)

    chooseAction(character: container)

}

func chooseAction(character: SKSpriteNode) {
    let pick = Int.random(in: 1...2)
    if pick == 1 {
        moveCharacter(character: character)
    }
    if pick == 2
        doSomethingElse(character: character)
}

func moveCharacter(character: SKSpriteNode) {
    //do move stuff
    //.....

    //after done, pick another action
    chooseAction(character: character)
}

func doSomethingElse(character: SKSpriteNode) {
    //THIS IS WHERE MY TROUBLE IS
    let c = character.childNode(withName: "//footLeft") as! SKSpriteNode
    c.color = .brown
    c.colorBlendFactor = 1
    //after done, pick another action
    chooseAction(character: character)
}

внутри RigCharacter есть следующие colorSprites с текстурами с точками привязки, установленными для движения персонажа

scene name: rig
    body (parent: rig)
        head (parent body)
        legLeft (parent: body)
            footLeft (parent: legLeft)
        legRight (parent: body)
            footRight (parent: legRight)
etc...

Моя проблема в том, что левая нога указанного персонажа не коричневого цвета.Меняется только одна нога персонажа (кажется, это первый экземпляр дочернего «legLeft», который найден).

если я печатаю контейнер в функции «doSomethingElse», он отображается как: name: 'container4'текстура: ['nil'] позиция: {197, 843} масштаб: {1.00, 1.00} размер: {400, 350} якорь: {0.5, 0.5} вращение: 0.00

Функция перемещения работает какЯ просто перемещаю контейнер, несмотря на это.Проблема заключается в доступе к дочерним элементам определенного ссылочного узла (поскольку все дочерние элементы имеют одинаковые имена, поскольку они просто являются ссылками)

Как получить доступ к частям тела определенных символов, чтобы я мог изменять / перемещать/ оживить их индивидуально?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...