使用 SKAction 改变 SKShapeNode 的位置
Using an SKAction to change position of an SKShapeNode
我有一个游戏,我需要一个 SKAction 将 SKShapeNode 的位置向上移动 64 个单位。这是我需要向上移动的对象的代码。
var rect = SKShapeNode(rectOfSize(CGSizeMake(200,200))
rect.position = CGPointMake(0,0)
我想让它每隔几秒向矩形的 y 值添加 64 个单位。所以:
rect.position = CGPointMake(0,64)
然后
rect.position = CGPointMake(0,128)
如有任何帮助,我们将不胜感激。
如果你想让你的 rect
流畅地动画超过 1 秒,你可以尝试这样的事情:
let moveRect = SKAction.moveToY(rect.position.y+64, duration: 1)
moveRect.timingMode = SKActionTimingMode.EaseInEaseOut // This line is optional
rect.runAction(moveRect)
添加第二行以确保缓入缓出运动,但这不是必需的。
这是您要找的东西吗?
let move = SKAction.moveTo(y: rect.position.y+64, duration: 1.0)
move.timingMode = SKActionTimingMode.easeInEaseOut
rect.run(move)
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)}
这是我的一部分 code.I 无法多次使用 SKAction。例如,如果单词 = "ULD",则精灵应沿着路径向上 (U)、然后向左 (L) 和向下 (D) 移动。每次用户通过手势创建新的轨迹时,记录手势的终止都会通过 touchesEnded 发生。雪碧他们必须每次执行。
但是我在模拟器中的精灵在这个例子和所有的例子中改变了位置。
我有一个游戏,我需要一个 SKAction 将 SKShapeNode 的位置向上移动 64 个单位。这是我需要向上移动的对象的代码。
var rect = SKShapeNode(rectOfSize(CGSizeMake(200,200))
rect.position = CGPointMake(0,0)
我想让它每隔几秒向矩形的 y 值添加 64 个单位。所以:
rect.position = CGPointMake(0,64)
然后
rect.position = CGPointMake(0,128)
如有任何帮助,我们将不胜感激。
如果你想让你的 rect
流畅地动画超过 1 秒,你可以尝试这样的事情:
let moveRect = SKAction.moveToY(rect.position.y+64, duration: 1)
moveRect.timingMode = SKActionTimingMode.EaseInEaseOut // This line is optional
rect.runAction(moveRect)
添加第二行以确保缓入缓出运动,但这不是必需的。
这是您要找的东西吗?
let move = SKAction.moveTo(y: rect.position.y+64, duration: 1.0)
move.timingMode = SKActionTimingMode.easeInEaseOut
rect.run(move)
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)}
这是我的一部分 code.I 无法多次使用 SKAction。例如,如果单词 = "ULD",则精灵应沿着路径向上 (U)、然后向左 (L) 和向下 (D) 移动。每次用户通过手势创建新的轨迹时,记录手势的终止都会通过 touchesEnded 发生。雪碧他们必须每次执行。 但是我在模拟器中的精灵在这个例子和所有的例子中改变了位置。