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();
}
}
}
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();
}
}
}