Как я могу получить настоящее «я», какой узел запускает последовательность действий SKaction - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь установить расширение типа SKAction.fireFromEnemy(), добавить последовательность действий и reuse последовательность. Моя проблема в том, что я не могу получить реальный self, поэтому я должен устанавливать последовательность каждый раз, когда создаю врага.

Как SKAction.removeFromParent(), что забавно c, может быть нацелено на узел, запускающий действие.

Ответы [ 2 ]

2 голосов
/ 09 января 2020

SKAction.customAction, вероятно, то, что вы хотите.

https://developer.apple.com/documentation/spritekit/skaction/1417745-customaction

Установите длительность на 0, если вы хотите, чтобы это произошло один раз.

SKAction.customAction(withDuration: 0) { node, time in node.fireFromEnemy() }

0 голосов
/ 09 января 2020

Действительный self находится на закрытии как первый параметр customAction

Пример:

class TestClass {
    init() {
        let node = SKSpriteNode(color:.red,size:CGSize(width:100,height:100))
        let sequence = SKAction.sequence([.fireFromEnemy, .wait(forDuration: 10), .removeFromParent()])
        node.run(sequence)
    }
}

extension SKAction {
    static let fireFromEnemy = SKAction.customAction(withDuration: 0.3) { node, elapsedTime in
        // Do stuff here like:
        node.alpha = 0.5
        node.zRotation = .pi
    }
}

...