移除 Sprite 的动画

Posted

技术标签:

【中文标题】移除 Sprite 的动画【英文标题】:Animation to Remove Sprite 【发布时间】:2018-12-29 22:15:46 【问题描述】:

我目前正在制作一个Sprite,我希望它在它消失之前制作动画

例如:我希望它动画它从块的顶部消失直到底部。换句话说,我想慢慢减小尺寸,直到什么都没有。但我想让它看起来正在消失而不是缩小到无。

let hand = SKSpriteNode(imageNamed: "hand")
hand.size = CGSize(width: size.width/10, height: size.height/30)
hand.position = CGPoint(x: CGFloat(posX-2)*size.width/10+offsetX, y:CGFloat(posY)*size.height/30+offsetY)
addChild(hand)

tl;dr 是否可以在 Swift 中使用 SpriteKit 来制作这种效果。 理想动画:https://ibb.co/sPsffmK

【问题讨论】:

作为橡皮擦效果,将背景节点从上到下移动到当前节点之上。 但是如果背景不是一种纯色会发生什么。 “裁剪”图像是否是最佳做法(这甚至是 swift 内置的)? 【参考方案1】:

SKAction 是由场景中的节点执行的动画。动作用于以某种方式改变节点(如随时间移动其位置),但您也可以使用动作来改变场景,如淡出。

在您的情况下,您可以应用多个动画:

let move_action = SKAction.moveBy(x: -100, y: 0, duration: 1.0)
let scale_action = SKAction.scale(to: 0.0, duration: 1.0)
let fade_action = SKAction.fadeAlpha(to: 0.0, duration: 1.0)

hand.run(move_action)
hand.run(scale_action)
//hand.run(fade_action)

在前面的示例中,hand 同时运行movescale 动画。但是您也可以将hand 转为move 转为position,然后再转为scale

let sequence = SKAction.sequence([move_animation,scale_animation])
hand.run(sequence)

SKAction有很多动画,here你可以找到完整的列表。

【讨论】:

以上是关于移除 Sprite 的动画的主要内容,如果未能解决你的问题,请参考以下文章

从父级(Sprite Kit)目标 C 中移除节点

Sprite-Kit 中的按钮按下动画

AS3动画效果常用公式

cocos动画没有cc.Sprite.spriteFrame属性

Sprite 按钮和图标悬停动画

Sprite动画效果实现