Swift 我怎样才能永远每2秒移动一秒精灵直到它被摧毁

Swift 我怎样才能永远每2秒移动一秒精灵直到它被摧毁,swift,sprite-kit,swift2,skaction,Swift,Sprite Kit,Swift2,Skaction,我有一个x位置数组,只在位置空闲时才想将精灵从当前位置移动到右侧的下一个x位置(每2秒移动精灵一次,持续1秒),否则如果位置空闲,我想将精灵移动到相反方向(左侧)。我希望这永远重复,直到精灵被摧毁。我不太确定该怎么办。以下是我能够做到的: for i in 1..<xPositions.count { let delayAction = SKAction.waitForDuration(2.0) if freePosi

我有一个x位置数组,只在位置空闲时才想将精灵从当前位置移动到右侧的下一个x位置(每2秒移动精灵一次,持续1秒),否则如果位置空闲,我想将精灵移动到相反方向(左侧)。我希望这永远重复,直到精灵被摧毁。我不太确定该怎么办。以下是我能够做到的:

        for i in 1..<xPositions.count   {

            let delayAction = SKAction.waitForDuration(2.0)

            if freePositions.contains(xPositions[indexOfCurrentSpritePosition! + i])   {
                let spriteSpriteToRight = SKAction.moveToX(CGFloat(xPositions[indexOfCurrentSpritePosition! + i]), duration: 1.0)
                let sequence = SKAction.sequence([moveSpriteToRight, delayAction])

                sprite.runAction(sequence)
            }

            else if !freePositions.contains(xPositions[indexOfCurrentSpritePosition! + i])  {
                let moveSpriteToLeft = SKAction.moveToX(CGFloat(xPositions[indexOfCurrentSpritePosition! - i]), duration: 1.0)
                let sequence = SKAction.sequence([moveSpriteToLeft, delayAction])

                sprite.runAction(sequence)
            }

        }

对于1中的i..在精灵被摧毁之前需要发生什么?你能提供x位置的例子吗(它们是否交替到左边和右边)?我不在我的笔记本电脑后面,但我有一个x位置阵列,沿屏幕宽度的8个位置(所有位置都有相同的y位置),一些位置已经被占用。精灵一次向右移动一个位置(每2秒一次,持续1秒),直到遇到填充位置,然后向左改变方向,然后向右返回,依此类推。精灵有一个身体,所以我在didBeginContact中设置了一个条件,以便在与另一个对象碰撞时销毁精灵,我想我必须先停止所有对精灵的操作,然后再销毁它。@0x141E我仍在尝试使其工作。这些位置是如何填充的?它们被导致精灵毁灭的物体填满了吗?我想,一旦我更好地理解了您想要完成的目标,我就能帮助您。@0x141E好的。我在xPositions随机创建对象来填充这些位置,并将它们添加到filledPositions数组中。这些填充位置的对象只是限制精灵移动的障碍物。他们不能摧毁精灵。还有另一个不填充xPositions的对象,它假定会在接触时破坏移动的精灵。从文章中的代码中,我在移动精灵之前检查一个位置是否空闲(在freePositions中),因为Xpositions数组是Filled位置和freePositions的总和。