0
如何在同一個角色上的多個動畫之間平滑過渡?紋理地圖集動畫之間的平滑切換
我正在用跳躍角色開發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。 –
我再次看到基本動畫! –