2017-09-11 49 views
1
while word != ""{ 

    if word[word.startIndex] == "R" { 

     let moveSpriteToRight = SKAction.move(to: CGPoint(x: sprite.position.x+128, y: sprite.position.y), duration: 1) 

     sprite.run(moveSpriteToRight) 

    } else if word == "D" { 

     let moveSpriteToDown = SKAction.move(to: CGPoint(x: sprite.position.x, y: sprite.position.y-128), duration: 1) 

     sprite.run(moveSpriteToDown) 

    } else if word == "L" { 

     let moveSpriteToLeft = SKAction.move(to: CGPoint(x: sprite.position.x-128, y: sprite.position.y), duration: 1) 

     sprite.run(moveSpriteToLeft) 

    } else if word == "U" { 

     let moveSpriteToUp = SKAction.move(to: CGPoint(x: sprite.position.x, y: sprite.position.y+128), duration: 1) 

     sprite.run(moveSpriteToUp) 
    } 

    word.remove(at: word.startIndex) 
} 

这是我的代码的一部分,我不能多次使用SKAction。例如,如果单词=“ULD”,则精灵应该沿着路径向上(U)移动,然后向左(L)和向下(D)移动。每次通过手势创建新的轨迹时,记录手势的终止都会通过touchesEnded发生。雪碧他们必须每次执行。但是在这个例子中,我的模拟器中的精灵将位置改为Down。如何改变SKSpriteNode与SKAction的位置

回答

0

你可以把你的动作到一个数组中,并运行它们的顺序完成所有检查完成

let actions = [SKAction]() 

while word != ""{ 

    if word[word.startIndex] == "R" { 
     actions.append(SKAction.move(to: CGPoint(x: sprite.position.x+128, y: sprite.position.y), duration: 1)) 
    } 

    if word == "D" { 
     actions.append(SKAction.move(to: CGPoint(x: sprite.position.x, y: sprite.position.y-128), duration: 1)) 
    } 

    if word == "L" { 
     actions.append(SKAction.move(to: CGPoint(x: sprite.position.x-128, y: sprite.position.y), duration: 1)) 
    } 

    if word == "U" { 
     actions.append(SKAction.move(to: CGPoint(x: sprite.position.x, y: sprite.position.y+128), duration: 1)) 
    } 

    word.remove(at: word.startIndex) 
} 

let sequenceOfActions = SKAction.sequence([actions]) 
sprite.run(sequenceOfActions) 
+0

我认为这是有趣,当人们失望投票,没有解释,没有提供任何回答自己。如果你有这样说下来的投票理由,这个答案是有效的。 –

+0

欢迎@Proffan。如果这回答了你的问题,你应该将其标记为正确的,这样其他人也会知道这一点;) –