游戏动画

简介

游戏开发离不开动画,游戏的质量很大程度上会跟动画挂钩

基本上很多游戏引擎,都使用一个Tween来管理动画

速度模型和时间模型

  • 简介
    1.很多时候,我们想要一个面板跳到中间,我们常规的描述是,200毫秒到达,而不是,每帧y+=0.5
    2.生活中,我们说从家到公司30分钟来大致秒速我们速度,而不是说2m/s这样去描述

  • 时间模型
    Tween就是时间模型,隐藏了速度细节,而是 from 0 to 200 need 200ms

  • 速度模型
    还可以 setInterval(function(){this.y+=1}, 16);
    使用速度模型还需要考虑额外的事情,到达终点关闭定时器,有时候可能不能真正到达,需要在边缘进行判定
    如从0开始每次加0.3,到达1,其实在0.9的时候就直接到达了

  • 选择
    基本上UI动画我们使用时间模型即可,而一些需要做一些精细处理的,才考虑速度模型,如赛车的运动,需要经常考虑是不是越界了,速度变了,或者说还会影响别的同步,如油量减少,这种需要精细处理的,或者未知终点的,优先考虑速度模型

拓展用法

  • 数据缓动
    我们经常写 Tween.get(img).to({alpha: 0}, 200),类似的控制显示方面的动画,如果想要实现跳动数字那其实也很方便的,如var obj = {money: 0}; Tween.get(obj).to({money: 100}, 200);,这样数据就实现了一个缓动的过程了,像egret还会提供一个 onChange 方法,我们可以进一步更新显示

  • 无限运动
    有些游戏引擎可以实现增量缓动,如Phaser,增加一个loop即可,可以省去一个定时器的代码

  • 抛物线运动
    一开始想的是模拟物理里面的方程,水平匀速,垂直有重力加速度g
    但是这样就无法知道终点了,然而很多时候我们需要知道终点
    之前苦思冥想过用二元一次方程来描述模拟这个过程,其实我们有一个跟简单的做法,缓动分两个轴,水平和垂直,垂直通过Ease的快慢顺序即可实现

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。