2015-06-20 1 views
0

Я сделать игру с SpriteKit, где у меня есть узел, который постоянно движущуюся назад и вперед от левой стороны к правой стороне экрана, используя эту последовательность SKAction:Как использовать .xscale, который запускается в зависимости от пути перемещения узла?

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() 

ответ

0

сделать из пользовательского блока и в этом действии запустите проверку, чтобы увидеть, идет ли она влево или вправо, а затем соответствующим образом настройте xScale узла. xScale -1 и xScale 1 - это значения, которые вы будете использовать.

+0

Спасибо за ответ. Я не могу понять, как запустить проверку, чтобы увидеть, идет ли она влево или вправо. – NickyNick321

+0

@ NickyNick321 вместо использования SKAction в вашей последовательности, используйте функции блока, как то, что вы сделали для self.move. Вы можете различать между левым и правым. – Wraithseeker