欢迎光临散文网 会员登陆 & 注册

Godot UI动画相关经验

2022-09-09 14:55 作者:enigmaxp  | 我要投稿

# Godot UI动画相关经验


## 原始


### 使用AnimationPlayer节点


AnimationPlayer操作方便,理解简单,可以快速对单个组件插入关键帧,实现动画


缺点:复杂动画操作比较困难,关键帧调整有时候很累


不能应对需要计算结果位置的动画


### Tween节点


可以应对需要计算结果位置的动画


但是需要代码加持,不支持自定义Transition


如果要自定义,可以参考CurveTween


### lerp 插值代码


可以应对所有情况,差值可以完全自定义


适合有数学功底的同学,可以实现更趋近于真实物理的插值动画


## 组件


### 自己造轮子


依托godot的节点树特性,节点是天生的组合式编程,通过自定义节点,实现对动画的封装,其实就是对Tween或者lerp的转包


### Anima插件


Anima更接近于即插即用型组件,可以非常方便的实现很多需要大量精力完成的组合动画


缺点就是包的太好了,要想修改的话,就会比较麻烦


### gdaction


据作者说更接近cocos的动画实现方式,由于我没用过cocos,所以已不能评判哪个引擎更合理


gdaction相比Anima可以进行更细粒度的、更广范围的自定义,但是理解起来也有难度


难度和自己造轮子肯定要低,但也不是0成本


gdaction和Anima都是依托tween节点,所以都需要往场景树里加节点,所以如果你有代码是遍历子节点,要当心子节点可能是这些插件动态添加的,比如我用的行为树插件,就要求叶节点不能有子节点


### SceneTreeTween 3.5版本


SceneTreeTween 是Godot 3.5版本新加入的tween节点,好处是它创建完会自动释放,并且写法上改良了很多,可以轻松实现并行动画,串接动画,通过bindnode方法,可以轻松绑定到目标ui节点,这样如果节点被释放,tween可以一同释放,不用担心yield的延迟执行问题。


## 结论:


如果想要快速实现UI动画,最简单无脑的选项是Anima,但是前提是你玩过一次。几乎就是复制黏贴代码,完成功能


稍微复杂一些的动画,用gdaction或者SceneTreeTween,非常简单就能扩展出自己想要的结果


对于某些特别的,细节爆表的UI演出,也许还需要借助Lerp代码的方式实现,或者可以考虑下用spine制作完之后,用插件导入


无论如何,UI部分是制作游戏过程中重复度最高的工作,动画部分演出有时又是必不可少,尽量只写一次代码,搞定今后遇到的问题,为真正的游戏逻辑或美术素材付出更多时间才是上策。


在这里,尽量避免写只能用一次的代码。使用插件或者封装都是比较好的选择



Godot UI动画相关经验的评论 (共 条)

分享到微博请遵守国家法律