使用SKAction更改SKShapeNode的位置

时间:2015-10-05 22:51:00

标签: ios swift sprite-kit position skaction

我有一个游戏,其中我需要一个SKAction来移动SKShapeNode 64单位的位置。这是我需要向上移动的对象的代码。

var rect = SKShapeNode(rectOfSize(CGSizeMake(200,200))
rect.position = CGPointMake(0,0)

我想这样做,以便每隔几秒钟,64个单位被添加到rect的y值。所以:

rect.position = CGPointMake(0,64)

然后

rect.position = CGPointMake(0,128)

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:3)

如果您希望在1秒钟内平稳地为rect制作动画,可以尝试以下方法:

let moveRect = SKAction.moveToY(rect.position.y+64, duration: 1)
moveRect.timingMode = SKActionTimingMode.EaseInEaseOut // This line is optional
rect.runAction(moveRect)

添加第二行是为了确保轻松放松,但没有必要。

这就是你要找的地方吗?

答案 1 :(得分:0)

let move = SKAction.moveTo(y: rect.position.y+64, duration: 1.0)
move.timingMode = SKActionTimingMode.easeInEaseOut
rect.run(move)

答案 2 :(得分:0)

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。