У меня есть функция, которая происходит каждые 2 секунды, что создает SKShapeNode
. В любой момент времени на экране есть более одного из этих спрайтов. Когда я вызвать другую функцию, чтобы обнаружить связь между одним из этих спрайтов и главным героем, происходит сбой приложения, поскольку функция didBeginContact
не знает, какой спрайт работать на:Как различать копии спрайтов
func didBeginContact(contact: SKPhysicsContact) {
enemy.runAction(SKAction.fadeOutWithDuration(1))
enemy.runAction(SKAction.scaleTo(1.5, duration: 1))
enemy.removeFromParent()
}
Спрайты создаются:
func Enemy(){
let enemy = SKShapeNode(circleOfRadius: 15)
self.addChild(enemy)
enemy.runAction(SKAction.moveTo(CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame)), duration: 2.0))
}
Есть ли способ различать копии в Swift, такие как уникальный ключ, который можно вызвать для каждого?
Используйте USERDATA, чтобы дать каждый скопировать уникальная идентификация. –
Некоторые наблюдения .... 1) 'враг' в методе« Враг »- это локальная переменная (с ограниченным объемом). Я подозреваю, что «враг» в 'didBeginContact' не инициализирован или ссылается на другой объект, 2) вам нужно будет добавить физическое тело к узлам, чтобы вызвать контакт, 3) вы должны создать последовательность/группу, чтобы затухать/масштабировать/removeFromParent, потому что узел должен находиться в сцене (или дереве узлов) для запуска действия. Вы удаляете узел из своего родителя, прежде чем действия будут иметь шанс запустить. – 0x141E