【问题标题】:Positioning SkSpriteNode inside SkAction completion handler在 SkAction 完成处理程序中定位 SkSpriteNode
【发布时间】:2018-01-28 23:19:05
【问题描述】:

我遇到了这个奇怪的问题。我正在使用 addChild 从 GameScene didMove(查看:SKView)内部添加一个敌人(SKSpriteNode)。

敌人已经定位到 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
    }

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • “self”不是场景,self是爆炸节点,需要用self.scene.addChild(modEnemy!)添加到场景中
  • 我检查了 self.scene.add 它仍然显示在同一位置。
  • “显示”是什么意思,位置是相对于父级的,而不是绝对的。如果父母是 10 岁,孩子是 20 岁,那么实际上孩子是 30 岁,但它只会显示 20
  • 是的,我已经检查过这个观点。我确实更改了holeExpansion 的位置以检查它所指的父级是否也是holeExpansion 而不是场景。但是扩孔位置的变化并不影响敌人的位置。它与holeExpansion 无关。

标签: swift sprite-kit skspritenode skaction completion


【解决方案1】:

你的敌人有physicsBody委托??也许你可以先看到它,因为如果它有,你必须搜索你的 isDynamic 属性。当属性等于 true 时,不能有 2 个物体在同一个空间中。

【讨论】:

  • 只要碰撞遮罩不发生碰撞,你可以在同一个位置有 2 个物体
  • 此时没有添加物理体。我刚刚为 2 个敌人指定了相同的位置以用于表示目的。封闭位置外的那一个罚款。封闭内的那个在完全不同的位置
猜你喜欢
  • 2015-06-20
  • 1970-01-01
  • 1970-01-01
  • 2020-10-18
  • 1970-01-01
  • 1970-01-01
  • 2018-05-03
  • 2015-08-30
  • 1970-01-01
相关资源
最近更新 更多