产生于错误位置的SKSpriteNodes - 游戏场景本身在移动吗?

时间:2017-09-15 14:50:18

标签: swift sprite-kit skspritenode skaction skscene

[提前发帖。]

我真的很困惑为什么会这样。

我有一个游戏,其中精灵(SKSpriteNodes)以正常的间隔从屏幕右侧产生并向左移动。

产卵精灵是一个世界的孩子。 SKSpriteNode,是游戏场景的孩子。这里宣布世界(didMove(to: view)):

world = self.childNode(withName: "world") as! SKSpriteNode

产卵被添加到世界'像这样:

nowSpawn.position = CGPoint(x: 350, y: 0)
world.addChild(nowSpawn)
nowSpawn.run(SKAction.moveBy(x: -1000, y: 0, duration: 10))

此生成添加位于函数addSpawn()内,该函数在另一个名为spawnDelays()的函数中调用,该函数计算添加生成的间隔的微小变化。 spawnDelays()中调用了didMove(to : view)

func spawnDelays () {

    let randDuration = Double(arc4random_uniform(UInt32(2))) + (universalDuration/8)
    let rerunSpawnDelays = SKAction.run{spawnDelays()}

    run(SKAction.sequence([
            SKAction.run(addSpawn),
            SKAction.wait(forDuration: Double(randDuration)),
            rerunSpawnDelays,

            ]), withKey: "spawning"
        )

    }

spawnDelays()

然而,发生了一些奇怪的事情。对于大约前10-15个产卵,它按预期工作,产生于屏幕右侧并向左移动。然而,不久之后,产卵开始进一步向左(即在屏幕上)出现,并继续向左前方显示,直到它们完全离开屏幕的左侧。

为了尝试查看正在进行的操作,每次出现新的生成时,我都会打印每个spawn的.position以及世界精灵的http://finance.google.com/finance/。然而,即使产卵产生在错误的位置(例如在屏幕中间,其位置将接近(0,0)),控制台仍然将其位置打印为(350,0) - 即位置在哪里我添加了产卵。

为了检查世界精灵是否移动,我每次产生一个产卵时都会打印它的位置 - 它始终是(0.0000 ...,0.0 ....)。< / p>

我唯一可能的解释是,世界的父母 - 即游戏场景 - 向左移动,因此所有儿童精灵的相对位置向左移动。但这没有任何意义。

0 个答案:

没有答案