当前位置: 首页 > news >正文

【Unity动画】综合案例完结-控制角色动作播放+声音配套

这个案例实现的动作并不复杂,主要包含一个 跳跃动作、攻击动作、还有一个包含三个动画状态的动画混合树。然后设置三个参数来控制切换。

状态机结构如下:

完整代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class GirlAnimacON : MonoBehaviour
{AudioSource OneAudioSour;public AudioClip RunVoiceClip;public AudioClip JumpVoiceClip;public AudioClip AttackVoiceClip;// 这个脚本实现控制角色动画播放以及声音播放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动画/// </summary>void ControllAnima(){if (Input.GetKey(KeyCode.W)){TunMove = false;//开关TunMo = 0;//开关//  开始移动动画的播放GirlsAnimator.SetBool("MoveBlend", true);SpeedGirlsMove += 0.1f;SpeedGirlsMove = Mathf.Clamp(SpeedGirlsMove, 0f, 20f);//限制最大最小数值}//else if (!Input.GetKey(KeyCode.W))//{//    SpeedGirlsMove -= 0.1f;//    SpeedGirlsMove = Mathf.Clamp(SpeedGirlsMove, 0f, 20f);//限制最大最小数值//}//--------------------------------if (Input.GetKeyUp(KeyCode.W)){//只执行一次TunMove = true;TunMo = 1;}if (TunMove){SpeedGirlsMove -= 0.1f;SpeedGirlsMove = Mathf.Clamp(SpeedGirlsMove, 0f, 20f);//限制最大最小数值}GirlsAnimator.SetFloat("MoveSpeed", SpeedGirlsMove);//------------------------------------------------控制其他动画-----------------------if (GirlsAnimator.GetCurrentAnimatorStateInfo(0).IsName("MoveBlend")){GirlsAnimator.SetBool("MoveBlend", false);}//------------------------------------------------控制其他动画-----------------------if (Input.GetKeyDown(KeyCode.Space)){//  开始跳跃动画的播放GirlsAnimator.SetBool("Jump", true);OneAudioSour.clip = AttackVoiceClip;//修改默认声音片段到组件中OneAudioSour.Play();//播放声音}if (GirlsAnimator.GetCurrentAnimatorStateInfo(0).IsName("JUMP")){GirlsAnimator.SetBool("Jump", false);}//------------------------------------------------控制gongji动画-----------------------if (Input.GetMouseButtonDown(0)){//  开始攻击动画的播放GirlsAnimator.SetBool("Attack", true);OneAudioSour.clip = AttackVoiceClip;OneAudioSour.Play();//OneAudioSour.PlayOneShot(AttackVoiceClip);}if (GirlsAnimator.GetCurrentAnimatorStateInfo(0).IsName("Attack")){GirlsAnimator.SetBool("Attack", false);}//------------------------------------------------控制其他动画-----------------------}public void PlayRunVoice1(){Debug.Log("跑步动画播到15帧了!开始播放跑步声音");OneAudioSour.clip = RunVoiceClip;OneAudioSour.Play();}public void PlayRunVoice2(){OneAudioSour.clip = RunVoiceClip;OneAudioSour.Play();Debug.Log("跑步动画播到30帧了!开始播放跑步声音");}}

http://www.lryc.cn/news/262563.html

相关文章:

  • 【工作流Activiti】任务组
  • 桌面概率长按键盘无法连续输入问题
  • 用23种设计模式打造一个cocos creator的游戏框架----(十九)备忘录模式
  • 动手学深度学习-自然语言处理-预训练
  • 力扣200. 岛屿数量(java DFS解法)
  • 解决el-table组件中,分页后数据的勾选、回显问题?
  • web网络安全
  • 若依 ruoyi-vue3 集成aj-captcha实现滑块、文字点选验证码
  • 安卓10 flutter webview 回退会闪退
  • 【Unity入门】物体5种移动方法
  • Elasticsearch的 8.x常用api汇总
  • k8syaml提供的几个有意思的功能,Kubernetes在线工具网站
  • 【图像分类】【深度学习】【Pytorch版本】 ResNeXt模型算法详解
  • Android 14 应用适配指南
  • 【AI美图提示词】第07期效果图,AI人工智能自动绘画,精选绝美版美图欣赏
  • 前端知识(十三)——JavaScript监听按键,禁止F12,禁止右键,禁止保存网页【Ctrl+s】等操作
  • 面向对象设计与分析(28)单例模式的奇异递归模板CRTP实现
  • 微信小程序 - 龙骨图集拆分
  • 使用React 18和WebSocket构建实时通信功能
  • vue3使用vue-router嵌套路由(多级路由)
  • openGauss学习笔记-164 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STDIN导入数据-处理错误表
  • QT Widget - 随便画个圆
  • js输入框部分内容不可编辑,其余正常输入,el-input和el-select输入框和多个下拉框联动后的内容不可修改
  • 分布式文件存储系统minio了解下
  • 迅为RK3568开发板使用OpenCV处理图像-ROI区域-位置提取ROI
  • 重新认识Word——尾注
  • 所有学前教育专业,一定要刷到这篇啊
  • colmap三维重建核心逻辑梳理
  • 查询某个类是在哪个JAR的什么版本开始出现的方法
  • Linux本地搭建StackEdit Markdown编辑器结合内网穿透实现远程访问