如何在自动生成的同时翻转SKPriteNode

时间:2016-04-08 00:47:27

标签: swift sprite-kit

我在地板上每1秒生成一个SKSpriteNode。有时它结束了,有时它在它之下。 SpriteNode是一个图像,我希望它在地板下翻转时翻转。我试过了

SKAction.scaleYto(scale, duration: 0.1

但它不起作用! 这是代码

func startGeneratingWallsEvery(seconds: NSTimeInterval) {
    generationTimer = NSTimer.scheduledTimerWithTimeInterval(seconds, target: self, selector: "generateWall", userInfo: nil, repeats: true)
}

func stopGenerating() {
    generationTimer?.invalidate()
}

func generateWall(){
    var scale: CGFloat
    let wall = ADWall()
    let rand = arc4random_uniform(2)

    if rand == 0 {
        scale = -1.0
    } else {
        scale = 1.0
    }
    //let translate1 = SKAction.moveByX(0, y: scale*(wall.size.height), duration: 0.1)
    let flip = SKAction.scaleYTo(scale, duration: 0.1)
    wall.position.x = size.width/2 + wall.size.width/2
    wall.position.y = scale * (kADGroundHeight/2 + wall.size.height/2)
    walls.append(wall)
    addChild(wall)
    runAction(flip)
}

请帮帮我!!

1 个答案:

答案 0 :(得分:0)

我可以想到一些不同的策略,可以在创建sprit时自动生成sprit:

  1. 第一个策略是手头有两个不同的图像,一个垂直翻转,另一个不垂直翻转。创建精灵时,如果它产生于地板以下,只需使用以下命令重新构造SKSpriteNode:

    wall.texture = SKTexture(imageNamed:“flipped_image”)

  2. 如果sprite出现在地板上方,你可以使用相同的方法再次重新构造精灵。

    1. 旋转图像。如果你想保持纹理简单而且只需要墙面物体的单个图像,你可以尝试的另一种方法是将图像旋转180度,如下所示:

      if belowFloor == true {
          zRotation = CGFloat(M_PI)
      }
      
    2. HTH!