Размещение SkSpriteNode внутри обработчика завершения SkAction

Я столкнулся с этой странной проблемой. Я добавляю врага (SKSpriteNode) изнутри GameScene didMove (для просмотра: SKView) с помощью addChild.

Враг позиционируется на x: 100, y: 100 и отображается правильно. Еще у меня есть еще одна анимация, по завершении которой я добавляю еще одного врага в ту же локацию. Но враг появляется в другом месте. Блок завершения показан ниже.

    holeExplosion.runHoleExplosionAction {[unowned self] in
        //self.addEnemy(enemyCount: 1, hole: holeExplosion)
        var modEnemy: ParentEnemy? = nil
        modEnemy = Enemy1(imageNamed: "Zombie1Jump1.png", healthPower:30)

        print(" \(self.scene?.position.x)  \(self.scene?.parent) ")
        self.addChild(modEnemy!)
        modEnemy!.enemySpeed = self.enemy1Speed
        modEnemy!.name = "enemy1"

        modEnemy!.position = CGPoint (x: 100 , y: 100)
        modEnemy!.zPosition = 2
    }

Любая помощь будет оценена. Спасибо.


person vaishakh    schedule 20.08.2017    source источник
comment
self - это не сцена, self - это узел взрыва, вам нужно добавить в сцену с помощью self.scene.addChild (modEnemy!)   -  person Knight0fDragon    schedule 21.08.2017
comment
Я проверил с помощью self.scene.add, он все еще отображается в том же месте.   -  person vaishakh    schedule 21.08.2017
comment
что вы имеете в виду, это показывает, что позиция относительно родителя, а не абсолютна. если родителю 10, а ребенку 20, то на самом деле ребенку 30, но он покажет только 20   -  person Knight0fDragon    schedule 21.08.2017
comment
Да, я уже проверял эту перспективу. Я изменил положение holeExpansion, чтобы проверить, является ли родительский объект, на который он ссылается, тоже holeExpansion, а не сценой. Но изменение позиции HoleExpansion не влияет на позицию врага. Это не относится к holeExpansion.   -  person vaishakh    schedule 21.08.2017


Ответы (1)


У вашего вражеского класса есть делегат PhysicsBody ?? возможно, вы увидите это первым, потому что, если он есть, вам нужно выполнить поиск в своем свойстве isDynamic. У вас не может быть двух тел в одном пространстве, если свойство равно true.

person Adrian Ponce Muñoz    schedule 20.08.2017
comment
У вас может быть 2 тела в одном месте, если маска столкновения не сталкивается - person Knight0fDragon; 21.08.2017
comment
Тело физики в этот момент не добавляется. Я только что дал двум противникам одно и то же место для демонстрации. Тот, который находится за пределами закрытия, отлично подходит. Тот, что внутри крышки, находится в совершенно другом месте - person vaishakh; 21.08.2017