如何使用.xscale根据节点移动的方式运行?

时间:2015-06-20 18:15:36

标签: swift sprite-kit skaction sktexture sktextureatlas

我正在使用SpriteKit进行游戏,我有一个节点,使用此SKAction序列重复从屏幕的左侧到右侧来回移动:

func move(){

    let recursive = SKAction.sequence([
        SKAction.moveByX(frame.size.width/2.8, y: 0, duration: NSTimeInterval(4),
        SKAction.moveByX(-frame.size.width/2.8, y: 0, duration: NSTimeInterval(4),
        SKAction.runBlock({self.move()})])
        doc.runAction(recursive, withKey: "move")
}  

节点是SKTexture,我正在使用名为WalkRight的图集。我想要做的是,当运行SKAction.moveByX(-frame.size.width / 2.8,y:0,duration:NSTimeInterval(4)时,我想使用.xscale来旋转我的walkRight图像。我无法弄清楚如何将此代码合并到我的SKAction序列中。

以下是我添加地图集的代码,以防需要回答这个问题。

//In class
var docWalkingFrames: [SKTexture]!

 // general runAction method to make doc walk.
func walkingDoc() {
    doc.runAction(SKAction.repeatActionForever(SKAction.animateWithTextures(docWalkingFrames,timePerFrame: 0.3,resize: false,restore: true)),withKey:"walkingInPlaceDoc")
}

//In didMoveToView
  //doc animation walk right
    let docAnimatedAtlas = SKTextureAtlas(named: "WalkRight")
    var walkFrames = [SKTexture]()
    let numImages = docAnimatedAtlas.textureNames.count
    for var i=1; i<=numImages; i++ {
        let docTextureName = "docRight\(i)"
        walkFrames.append(docAnimatedAtlas.textureNamed(docTextureName))
    }

    docWalkingFrames = walkFrames

    let firstFrame = docWalkingFrames[0]
    doc = SKSpriteNode(texture: firstFrame)
    doc.position = CGPoint(x:self.frame.size.width/3.1, y:self.frame.size.height/2)
    doc.size = CGSize(width: 220, height: 470)
    doc.zPosition = 2
    addChild(doc)

walkingDoc()

1 个答案:

答案 0 :(得分:0)

使用自定义阻止操作并在该操作中,运行检查以查看它是向左还是向右,然后根据节点调整节点的xScalexScale -1xScale 1是您将使用的值。