在Unity中,动画主要有有三种类型:
1.序列帧动画:通过快速播放一系列图片产生动画的效果,类似于 Gif一样
2.关节动画:把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一 个整体的动画,角色比较灵活
3.骨骼动画:应用最广泛的动画,结合上面两种动画形式,内部骨骼,外部蒙皮。
在我实际开发中,最常用的就是序列帧和骨骼动画了
序列帧:
直接给New Sprite赋予如下脚本。实质上在控制哪个毫秒,精灵New Sprite上放的是那张图片而已。这里没有使用Update()这个父进程去播放动画,利用一个协程对应一个GIF的控制,我认为更合适。
这里唯一一个注意点是,大家可以看到,原来GIF只有46帧,序列帧大图是按8x8共64帧来配置的,所以注意会有空白,因此,在协程中要求播到46帧,则马上从0开始。
在协程中,停顿时间为1/fps秒,fps为刷新频率,也就是帧数,原始游戏是30,高清时代是60,现在貌似去到75,这个自己定好就行。文章来源:https://www.toymoban.com/news/detail-547390.html
实质上本程序来来去去都是spriteRenderer.sprite = sprites[i];控制当前是数组那个元素而已文章来源地址https://www.toymoban.com/news/detail-547390.html
using UnityEngine;
using System.Collections;
public class AnimationController : MonoBehaviour
{
private Coroutine AnimationPlay;//播放协程
private Sprite[] sprites;//被切割的序列图数组
private SpriteRenderer spriteRenderer;//精灵控制器
void Start()
{
sprites = Resources.LoadAll<Sprite>("aa");//载入资源aa.png
spriteRenderer = GetComponent<SpriteRenderer>() as SpriteRenderer;//这东西在精灵身上自带的,直接拿就行
}
void Update()
{
}
//按钮动作
public void PlayButtonOnClick()
{
AnimationPlay = StartCoroutine(AnimationPlayThread(30));
}
public void StopButtonOnClick()
{
StopCoroutine(AnimationPlay);
}
//实质在控制什么时候在精灵上放那张被切割的小图而已
IEnumerator AnimationPlayThread(float fps)
{
int i = 0;
while (true)
{
if (i < 46)
{
spriteRenderer.sprite = sprites[i];
i++;
}
else
{
i = 0;
}
yield return new WaitForSeconds(1 / fps);
}
}
}
到了这里,关于Unity常用的动画类型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!