animator动画
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DragonAnimator : LoadResou
{
//AudioSouce组件
public AudioSource m_Audio;
//出事位置
Vector3 oldPos;
//持有女孩animator引用
Girlanimartor m_girlanimartor;
//获取animator组件
public Animator anim;
//动画器状态信息
AnimatorStateInfo anim_StateInfo;
//所有动画剪辑
AnimationClip[] clips;
string[] clipnames = null;
void Start () {
m_Audio = this.GetComponent<AudioSource>();
oldPos = transform.position;
m_girlanimartor = transform.parent.Find("Girl").GetComponent<Girlanimartor>();
anim = this.GetComponent<Animator>();
clips = anim.runtimeAnimatorController.animationClips;
}
// Update is called once per frame
void Update () {
anim_StateInfo = anim.GetCurrentAnimatorStateInfo(0);
//walk状态
if (anim_StateInfo.IsName("dragon-walk"))
{
anim.SetBool("towalk", false);
if (anim_StateInfo.normalizedTime >= 1)
{
//回到idle
anim.SetBool("toturnidle", true);
m_girlanimartor.SettingState(StateType.turn);
}
transform.position = Vector3.MoveTowards(transform.position, new Vector3(2.5f, 0, 2), 0.035f);
}
//speak1
if (anim_StateInfo.IsName("dragon-speak1"))
{
anim.SetBool("tospeak1", false);
if (anim_StateInfo.normalizedTime >= 1)
{
//回到idle
anim.SetBool("toturnidle", true);
m_girlanimartor.SettingState(StateType.speak11, "2-Girl");
//--------------------------------女孩播放speak11
//m_girlanimartor.m_Audio.clip = GetAsset<AudioClip>(AssetType.audio, "2-Girl");
//m_girlanimartor.m_Audio.Play();
}
}
//speak21
if (anim_StateInfo.IsName("dragon-speak21"))
{
anim.SetBool("tospeak21", false);
if (anim_StateInfo.normalizedTime >= 1)
{
anim.SetBool("tospeak22", true);
//-------------------------------------------播放小龙speak22
m_Audio.clip = GetAsset<AudioClip>(AssetType.audio, "5");
m_Audio.Play();
}
}
//speak22
if (anim_StateInfo.IsName("dragon-speak22"))
{
anim.SetBool("tospeak22", false);
if (anim_StateInfo.normalizedTime >= 1)
{
anim.SetBool("towalkidle", true);
m_girlanimartor.SettingState(StateType.speak2, "6-Girl");
//-------------------------------------------播放女孩speak2
//m_girlanimartor.m_Audio.clip = GetAsset<AudioClip>(AssetType.audio, "6-Girl");
//m_girlanimartor.m_Audio.Play();
}
}
//speak3
if (anim_StateInfo.IsName("dragon-speak3"))
{
anim.SetBool("tospeak3", false);
if (anim_StateInfo.normalizedTime >= 1)
{
//回到idle
anim.SetBool("towalkidle", true);
m_girlanimartor.SettingState(StateType.speak3, "8-Girl");
//-------------------------------------------播放女孩speak3
//m_girlanimartor.m_Audio.clip = GetAsset<AudioClip>(AssetType.audio, "8-Girl");
//m_girlanimartor.m_Audio.Play();
}
}
//speak4
if (anim_StateInfo.IsName("dragon-speak4"))
{
anim.SetBool("tospeak4", false);
if (anim_StateInfo.normalizedTime >= 1)
{
//回到idle
anim.SetBool("towalkidle", true);
m_girlanimartor.SettingState(StateType.speak4, "10-Girl");
//-------------------------------------------播放女孩speak4
//m_girlanimartor.m_Audio.clip = GetAsset<AudioClip>(AssetType.audio, "10-Girl");
//m_girlanimartor.m_Audio.Play();
}
}
//speak5
if (anim_StateInfo.IsName("dragon-speak5"))
{
anim.SetBool("tospeak5", false);
if (anim_StateInfo.normalizedTime >= 1)
{
//回到idle
anim.SetBool("towalkidle", true);
m_girlanimartor.SettingState(StateType.speak5, "12-Girl");
//-------------------------------------------播放女孩speak5
//m_girlanimartor.m_Audio.clip = GetAsset<AudioClip>(AssetType.audio, "12-Girl");
//m_girlanimartor.m_Audio.Play();
}
}
//speak6
if (anim_StateInfo.IsName("dragon-speak6"))
{
anim.SetBool("tospeak6", false);
if (anim_StateInfo.normalizedTime >= 1)
{
//回到idle
anim.SetBool("towalkidle", true);
m_girlanimartor.SettingState(StateType.speak6, "14-Girl");
//-------------------------------------------播放女孩speak6
//m_girlanimartor.m_Audio.clip = GetAsset<AudioClip>(AssetType.audio, "14-Girl");
//m_girlanimartor.m_Audio.Play();
}
}
//idle状态
if (anim_StateInfo.IsName("dragon-idle"))
{
anim.SetBool("toidle", false);
if (anim_StateInfo.normalizedTime >= 1f) {
anim.SetBool("towalk",true);
}
}
//走完待机状态
if (anim_StateInfo.IsName("dragon-turnidle"))
{
anim.SetBool("toturnidle", false);
}
//迈步待机状态
if (anim_StateInfo.IsName("dragon-walkidle"))
{
anim.SetBool("towalkidle", false);
}
}
public void SettingState(StateType stateType,string str = null)
{
if (!CheckClip("dragon-" + stateType.ToString())) {
anim.SetBool("toidle",true);
return;
}
StartCoroutine(Buffer(stateType, str));
//anim.SetBool("to" + stateType.ToString(),true);
}
//检验是否有该动画
bool CheckClip(string clipname) {
//添加判断名字数组是否为空
if (clipnames == null) {
clipnames = new string[clips.Length];
for (int i = 0; i < clips.Length; i++)
{
clipnames[i] = clips[i].name;
}
}
int index = Array.IndexOf(clipnames, clipname);
if (index == -1) {
return false;
}
return true;
}
public void Init()
{
transform.position = oldPos;
StartCoroutine(ReStart());
}
IEnumerator ReStart(){
yield return new WaitForSeconds(3f);
anim.SetBool("toidle", true);
}
//缓冲动画
IEnumerator Buffer(StateType type,string name = null) {
//StateType bufferstate;
//switch (type) {
// case StateType.speak1:
// bufferstate = StateType.turnidle;
// anim.SetBool("to" + bufferstate,true);
// break;
//}
yield return new WaitForSeconds(anim_StateInfo.length);
anim.SetBool("to" + type, true);
if (name != null) {
m_Audio.clip = GetAsset<AudioClip>(AssetType.audio, name);
m_Audio.Play();
}
}
}
animator动画相关推荐
- 用Unity的Animation播放Animator动画Clip
简单的动画,其实不需要Animator动画状态机管理,用Animation播放效率更高,但可能由于历史遗留问题,或网上下载的第三方资源,得到的是Animator资源,可以在Clip的Debug试图下, ...
- Cartoon Animator动画制作软件CTA自动保存项目小工具
大家都知道Cartoon Animator动画软件总是会无辜闪退 好不容易K了很多帧,然后崩溃立马回到解放前. 做了这个小工具暂时解决一下燃眉之急!!!! 下载地址: https://download ...
- 【Unity3D小技巧】Unity3D中Animation和Animator动画的播放、暂停、倒放控制
推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦. 一.前言 ...
- 『ANDROID』android animator 动画
原文地址:android animator 动画 animator 动画 动画的作用是让UI有动感, 看上去时尚. Android中动画分两种方式: 一种方式是补间动画Tween Animation, ...
- android animator 动画
animator 动画 动画的作用是让UI有动感, 看上去时尚. Android中动画分两种方式: 一种方式是补间动画Tween Animation,就是说你定义一个开始和结束,中间的部分由程序运算得 ...
- 【Unity3D】Animator动画播放时卡死在第一帧BUG系列
常见因素: 1.Animator在Update或其他每帧执行的协程或方法里疯狂被代码调用. 2.Animator动画播放事件会再次调用Animator动画播放. 3.Animator状态机切换问题,A ...
- Unity中的Animator动画详解
Unity中的Animator动画详解 Animator动画导入 Animator动画详解 动画类型选择 Rig面板属性 Mode面板属性 Animation面板属性 动画片段 控制使用 Animat ...
- Android Animator(动画)类 详解
Android Animator动画类 详解 动画分为3种 ValueAnimator类 ObjectAnimator类 AnimatorSet类 Animator的addListener()方法(监 ...
- unity 对Animator动画系统的研究
unity的新动画系统叫Mecanim,使用Animator来取代旧系统Animation,按Unity文档的惯例:知识点主要分2部分:unity manual和unity script,读者可以边看 ...
- Unity简单操作:设置触发条件 切换Animator动画控制器 里面播放的Animation动画
确保animator里面有多个animation动画剪辑,点击Animator里面[Parameters]添加触发条件 添加连线箭头并且 给箭头连线绑定触发事件 添加连线箭头并且 给箭头连线绑定触发事 ...
最新文章
- pandas 绘图 机器学习看特征相关性
- [分享]千万数量级分页存储过程(效果演示)
- 报错 之 ModuleNotFoundError: No module named ‘setproctitle‘
- 计算机知识产权结合,计算机知识产权.doc
- 微信公众平台开发接口PHP SDK完整版
- 不止代码:合唱队列(动态规划)
- redis源码剖析(十五)——客户端思维导图整理
- (转)腾讯2011.10.15校园招聘会笔试题
- 解聘!“双一流”教授被通报批评
- 古风祥云PNG免抠素材,喜欢吗?
- sklearn-数据预处理scale
- 剑指offer——跳台阶变态跳台阶矩形覆盖
- ab753变频器中文说明书_怎样快速学习使用和维修变频器
- sql 找不到oracle接口,sql-server – sql server链接服务器到oracle返回数据存在时找不到的数据...
- [北航软工]技术规格说明书
- python_基础部分(1)
- 注册gitlab-runner
- 钟控RS,D,JK,T触发器
- 互联网人必备的六大类专业搜索工具
- Java将图片压缩为原来的一半
热门文章
- python情人节之玫瑰花与表白方式,用python画一朵玫瑰花,拿去表白趴
- MATLAB|用循环描点画波形图
- 基于 Electron + ES6 实现的桌面计算器应用
- 基于YOLOV3的通用物体检测项目实战---(5)利用DarkNet框架进行YOLOV3模型训练实操(笔记)
- 在Spring Boot中使用数据缓存
- 解决Mybatis3.3中NVARCHAR2生僻字乱码
- linux内核机制之设备树
- 快速搞懂Vue里面components和template
- 应届计算机科学与技术简历,计算机科学与技术应届生简历范文
- 计算机科学技术考研内容,计算机科学与技术考研考哪些科目?