做網(wǎng)站 建站推銷一個(gè)產(chǎn)品的方案
這個(gè)案例實(shí)現(xiàn)的動(dòng)作并不復(fù)雜,主要包含一個(gè) 跳躍動(dòng)作、攻擊動(dòng)作、還有一個(gè)包含三個(gè)動(dòng)畫狀態(tài)的動(dòng)畫混合樹。然后設(shè)置三個(gè)參數(shù)來(lái)控制切換。
狀態(tài)機(jī)結(jié)構(gòu)如下:
完整代碼
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class GirlAnimacON : MonoBehaviour
{AudioSource OneAudioSour;public AudioClip RunVoiceClip;public AudioClip JumpVoiceClip;public AudioClip AttackVoiceClip;// 這個(gè)腳本實(shí)現(xiàn)控制角色動(dòng)畫播放以及聲音播放Animator GirlsAnimator;float SpeedGirlsMove;bool TunMove=false;int TunMo = 0;void Start(){OneAudioSour = this.GetComponent<AudioSource>();GirlsAnimator = this.GetComponent<Animator>();//游戲初始化GirlsAnimator.SetBool("MoveBlend", false);GirlsAnimator.SetBool("Jump", false);GirlsAnimator.SetBool("Attack", false);TunMove = false;SpeedGirlsMove = 0f;}void Update(){ControllAnima();}/// <summary>/// 控制Player動(dòng)畫/// </summary>void ControllAnima(){if (Input.GetKey(KeyCode.W)){TunMove = false;//開關(guān)TunMo = 0;//開關(guān)// 開始移動(dòng)動(dòng)畫的播放GirlsAnimator.SetBool("MoveBlend", true);SpeedGirlsMove += 0.1f;SpeedGirlsMove = Mathf.Clamp(SpeedGirlsMove, 0f, 20f);//限制最大最小數(shù)值}//else if (!Input.GetKey(KeyCode.W))//{// SpeedGirlsMove -= 0.1f;// SpeedGirlsMove = Mathf.Clamp(SpeedGirlsMove, 0f, 20f);//限制最大最小數(shù)值//}//--------------------------------if (Input.GetKeyUp(KeyCode.W)){//只執(zhí)行一次TunMove = true;TunMo = 1;}if (TunMove){SpeedGirlsMove -= 0.1f;SpeedGirlsMove = Mathf.Clamp(SpeedGirlsMove, 0f, 20f);//限制最大最小數(shù)值}GirlsAnimator.SetFloat("MoveSpeed", SpeedGirlsMove);//------------------------------------------------控制其他動(dòng)畫-----------------------if (GirlsAnimator.GetCurrentAnimatorStateInfo(0).IsName("MoveBlend")){GirlsAnimator.SetBool("MoveBlend", false);}//------------------------------------------------控制其他動(dòng)畫-----------------------if (Input.GetKeyDown(KeyCode.Space)){// 開始跳躍動(dòng)畫的播放GirlsAnimator.SetBool("Jump", true);OneAudioSour.clip = AttackVoiceClip;//修改默認(rèn)聲音片段到組件中OneAudioSour.Play();//播放聲音}if (GirlsAnimator.GetCurrentAnimatorStateInfo(0).IsName("JUMP")){GirlsAnimator.SetBool("Jump", false);}//------------------------------------------------控制gongji動(dòng)畫-----------------------if (Input.GetMouseButtonDown(0)){// 開始攻擊動(dòng)畫的播放GirlsAnimator.SetBool("Attack", true);OneAudioSour.clip = AttackVoiceClip;OneAudioSour.Play();//OneAudioSour.PlayOneShot(AttackVoiceClip);}if (GirlsAnimator.GetCurrentAnimatorStateInfo(0).IsName("Attack")){GirlsAnimator.SetBool("Attack", false);}//------------------------------------------------控制其他動(dòng)畫-----------------------}public void PlayRunVoice1(){Debug.Log("跑步動(dòng)畫播到15幀了!開始播放跑步聲音");OneAudioSour.clip = RunVoiceClip;OneAudioSour.Play();}public void PlayRunVoice2(){OneAudioSour.clip = RunVoiceClip;OneAudioSour.Play();Debug.Log("跑步動(dòng)畫播到30幀了!開始播放跑步聲音");}}