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。 –
我再次看到基本动画! –