2015-06-16 2 views
0

Я делаю игру, и у меня есть узел, который переключается между двумя текстурами. Мне было интересно, как я могу добавить продолжительность 0,5 секунды для каждой текстуры, прежде чем она вернется к предыдущей. Прямо сейчас, когда я запускаю игру, текстуры переключаются мгновенно, поэтому я хотел бы отложить его на 0,5 секунды.Продолжительность текстуры SpriteKit

Мой текущий код:

func move(){ 

    let recursive = SKAction.sequence([ 

     SKAction.setTexture(SKTexture(imageNamed: "D2")), 
     SKAction.setTexture(SKTexture(imageNamed: "DWalkRight")), 
     SKAction.moveByX(frame.size.width/2.8, y: 0, duration: NSTimeInterval(randomNumber())), 
     SKAction.setTexture(SKTexture(imageNamed: "D1")), 
     SKAction.setTexture(SKTexture(imageNamed: "DWalkLeft")), 
     SKAction.moveByX(-frame.size.width/2.8, y: 0, duration: NSTimeInterval(randomNumber())), 
     SKAction.runBlock({self.move()})]) 

     Drake1.runAction(recursive, withKey: "move") 
} 
+0

Выполнить последовательность, которая будет ждать 0,5 секунды, а затем изменить текстуру. Вам нужно, чтобы это было синхронизировано с каким-либо событием, например. когда узел достигает определенной точки после какого-либо другого действия или вы просто хотите, чтобы узел изменил свою текстуру через определенное время независимо от того, что? – Whirlwind

+0

В основном у меня есть узел, который перемещается с левой стороны экрана вправо, и у меня есть две текстуры, которые делают его похожим на изображение. Так как он движется, я хочу переключаться между двумя текстурами (вперед и назад), и каждая текстура длится в течение 0,5 секунд. – NickyNick321

+0

Вы можете использовать то, что вам нравится в этом случае. Просто запустите последовательность с задержкой. Чтобы изменить текстуру, вы можете следовать за ответом Сангони или использовать метод setTexture на нужном узле (вы сделаете это внутри блока) или не будете использовать блок и использовать действие, как вы уже делали. Вы тоже можете использовать pbodsk, но, поскольку это всего лишь два обмена изображениями, я предлагаю вам попробовать для себя оба метода, чтобы увидеть, что вам подходит. Анимация с помощью текстур полезна, когда у вас много текстур для анимации, но для этого требуется массив с текстурами, поэтому он добавляет немного больше «сложности» :) – Whirlwind

ответ

0

Вы можете использовать SKTextureAtlas, содержащие изображения.

Этот атлас можно затем загрузить в массив, который можно использовать с SKAction.animateWithTextures:timePerFrame:

Для хорошего введения в SKTextureAtlas вы могли бы взглянуть на this tutorial.

Надежда это полезно

0

Это объясняется в SKSpriteNode docs.

myNode.texture = SKTexture(imageNamed: "imageName")