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

news/2025/3/2 2:39:23/

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

状态机结构如下:

完整代码

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.ppmy.cn/news/1274394.html

相关文章

企业AI助理:数字助理嵌入更多应用场景

随着科技的快速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经成为现代企业不可或缺的一部分。数字助理作为AI的一种形式&#xff0c;正在越来越多地嵌入到企业的各个应用场景中&#xff0c;为企业提供更加智能化、高效化的服务。本文将探讨企业AI助理的发展趋势、应…

移动端适配的理解和各种方案解析(详解)

-&#x1f482; 个人网站:【紫陌】【笔记分享网】&#x1f485; 想寻找共同学习交流、共同成长的伙伴&#xff0c;请点击【前端学习交流群】 前言&#xff1a;最近在弄移动端项目&#xff0c;记录一下移动端的应用方案。对各个方案的解决理解。 目录 1.什么是移动端适配 2.理解…

Android APP 常见概念与 adb 命令

adb 的概念 adb 即 Android Debug Bridge 。在窗口输入 adb 即可显示帮助文档。adb 实际上就是在后台开启一个 server&#xff0c;会接收 adb 的命令然后帮助管理&#xff0c;控制&#xff0c;查看设备的状态、信息等&#xff0c;是开发、测试 Android 相关程序的最常用手段。…

Docker部署MinIO对象存储服务器结合内网穿透实现远程访问

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器&#xff0c;可以在各种环境中运行&#xff0c;例如本地、Docker容器、Kubernetes集群等。它兼…

微服务——服务异步通讯(MQ高级)

MQ的一些常见问题 消息可靠性 生产者消息确认 返回ack&#xff0c;怎么感觉这么像某个tcp的3次握手。 使用资料提供的案例工程. 在图形化界面创建一个simple.queue的队列&#xff0c;虚拟机要和配置文件里面的一样。 SpringAMQP实现生产者确认 AMQP里面支持多种生产者确认的类…

《Effective C++》条款35

考虑virtual函数以外的其他选择 1.Non-Virtual Interface class A { public:void test(){// 做一些事前工作dotest();// 做一些事后工作} private:virtual void dotest(){cout << "A";} }; class B :public A { public:void test(){dotest();} private:virtual…

【工作流Activiti】查询处理任务

1、查询任务 每个节点都配置了Assignee&#xff0c;流程启动后&#xff0c;任务的负责人就可以查询自己当前需要处理的任务&#xff0c;查询出来的任务都是该用户的待办任务。 Autowired private TaskService taskService;/*** 查询当前个人待执行的任务*/ Test public void f…

SpringBoot之请求的详细解析

1. 请求 在本章节呢&#xff0c;我们主要讲解&#xff0c;如何接收页面传递过来的请求数据。 1.1 Postman 之前我们课程中有提到当前最为主流的开发模式&#xff1a;前后端分离 在这种模式下&#xff0c;前端技术人员基于"接口文档"&#xff0c;开发前端程序&…