Как я могу сделать плавные переходы между несколькими анимациями на одном и том же персонаже без задержки?Плавное переключение между текстурными атласами анимации
Я развиваю игру в iOS Swift с прыгающим персонажем. У этого персонажа есть несколько анимаций, таких как базовая анимация, анимация перехода и анимация посадки.
Я установил текстуру атлас для каждой анимации следующим образом:
// Basic
let surferBasicAnimatedAtlas = SKTextureAtlas(named: "surfer_basic.atlas")
let numImages = surferBasicAnimatedAtlas.textureNames.count
for var i=0; i<numImages; i++ {
let surferBasicTextureName = "surfer_basic_000\(i)"
self.surferBasicFrames.append(surferBasicAnimatedAtlas.textureNamed(surferBasicTextureName))
}
// Jump
let surferJumpAnimatedAtlas = SKTextureAtlas(named: "surfer_jump.atlas")
let numJumpImages = surferJumpAnimatedAtlas.textureNames.count
for var i=0; i<numJumpImages; i++ {
let surferJumpTextureName = "surfer_jump_000\(i)"
self.surferJumpFrames.append(surferJumpAnimatedAtlas.textureNamed(surferJumpTextureName))
}
// Landing
let surferLandingAnimatedAtlas = SKTextureAtlas(named: "surfer_landing.atlas")
let numLandingImages = surferLandingAnimatedAtlas.textureNames.count
for var i=12; i<numLandingImages; i++ {
let surferLandingTextureName = "surfer_landing_000\(i)"
self.surferLandingFrames.append(surferLandingAnimatedAtlas.textureNamed(surferLandingTextureName))
}
// Pick textures
self.surferWalkingFrames = surferBasicFrames
let firstFrame = surferWalkingFrames[0]
self.character = SKSpriteNode(texture: firstFrame)
self.character.runAction(SKAction.repeatActionForever(SKAction.animateWithTextures(surferWalkingFrames, timePerFrame: (1/30), resize: false, restore: true)), withKey:"surferBasic")
Когда я прикасаюсь к экрану основной анимации следует остановить и скачок анимация должна работать, но это вызывает задержку. Примерно через секунду после прикосновения начинается анимация перехода.
Я попытался это:
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
self.character.removeActionForKey("surferBasic")
self.surferWalkingFrames = surferJumpFrames
self.character.runAction(SKAction.repeatActionForever(SKAction.animateWithTextures(surferWalkingFrames, timePerFrame: (1/30), resize: false, restore: true)), withKey:"surferJump")
}
Как я могу сделать плавные переходы между несколькими анимациями на тот же характер, без задержки?
Это сделало переход более плавным. Больше нет «замораживания» между переходом. Тем не менее, фактическая анимация прыжка все еще начинается с опоздания. Поэтому ваш ответ помог частично! У тебя есть другие идеи? –
@NGAFD Когда вы говорите, что начинается вторая поздняя дата, это означает, что вы видите базовую анимацию немного дольше или она не оживает на секунду? Единственное, что я могу придумать, это установить восстановление на false. –
Я вижу основную анимацию на секунду дольше! –