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

news2024/11/24 8:51:10

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

状态机结构如下:

完整代码

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.coloradmin.cn/o/1320064.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能监控平台/视频共享融合系统EasyCVR如何做到不被其他软件强制终止?具体如下

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。国标GB28181流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频…

pinia安装,持久化,统一导出

文章目录 前言Pinia 是什么&#xff1f; 一、Pinia与持久化插件 安装二、使用步骤创建 Store下面是目录结构下面是index.js代码pinia 独立维护仓库 统一导出 下面是modules目录下的user.js代码下面是main.js代码&#xff0c;整个项目只有一个main.js 前言 Pinia 是什么&#x…

如何安装运行Wagtail并结合cpolar内网穿透实现公网访问网站界面

文章目录 前言1. 安装并运行Wagtail1.1 创建并激活虚拟环境 2. 安装cpolar内网穿透工具3. 实现Wagtail公网访问4. 固定的Wagtail公网地址 前言 Wagtail是一个用Python编写的开源CMS&#xff0c;建立在Django Web框架上。Wagtail 是一个基于 Django 的开源内容管理系统&#xf…

Python语言学习笔记之十二(FastAPI)

本课程对于有其它语言基础的开发人员可以参考和学习&#xff0c;同时也是记录下来&#xff0c;为个人学习使用&#xff0c;文档中有此不当之处&#xff0c;请谅解。 1、认识FastAPI FastApi&#xff0c;一个用于构建API的现代、快速(高性能)的web框架。它使用Python 3.6的类型…

二叉树题目:二叉树着色游戏

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;二叉树着色游戏 出处&#xff1a;1145. 二叉树着色游戏 难度 6 级 题目描述 要求 两位玩家参与二叉树着色游戏。给定二叉树的根结点 root \textt…

亿发:数据无缝整合,实时洞察业务——深入分析ERP系统的四大业财一体化优势

"业务财务一体化"是企业数字化的核心议题之一。在业务运作过程中&#xff0c;财务记账能够实现自动、实时化。这也是传统企业资源计划&#xff08;ERP&#xff09;系统的主要价值&#xff0c;实现业务流、信息流和资金流的无缝整合&#xff0c;同时满足企业对业务风险…

深入解析Spring Boot集成MyBatis的多种方式

文章目录 1. 引言2. 传统的XML配置方式2.1 引入依赖2.2 配置数据源和MyBatis2.3 编写Mapper接口和XML映射文件2.4 使用Mapper 3. 注解配置方式3.1 引入依赖3.2 配置数据源和MyBatis3.3 编写Mapper接口3.4 使用Mapper 4. MyBatis动态SQL4.1 使用XML配置方式4.2 使用注解配置方式…

laravel的安装

laravel的安装&#xff08;Composer小皮&#xff09; Composer的安装 windows下安装 https://getcomposer.org/Composer-Setup.exe 修改镜像 阿里云&#xff1a; composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 华为云&#xff1a; compos…

时序分解 | Matlab实现DBO-VMD基于蜣螂优化算法优化VMD变分模态分解时间序列信号分解

时序分解 | Matlab实现DBO-VMD基于蜣螂优化算法优化VMD变分模态分解时间序列信号分解 目录 时序分解 | Matlab实现DBO-VMD基于蜣螂优化算法优化VMD变分模态分解时间序列信号分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.利用蜣螂优化算法优化VMD中的参数k、a&…

带你了解OpenCV4工业缺陷检测的六种方法

文章目录 OpenCV4工业缺陷检测的六种方法机器视觉缺陷检测1. 工业上常见缺陷检测方法方法一&#xff1a;基于简单二值图像分析实现划痕提取&#xff0c;效果如下&#xff1a;方法二&#xff1a;复杂背景下的图像缺陷分析&#xff0c;基于频域增强的方法实现缺陷检测&#xff0c…

【工作流Activiti】Activiti流程操作

1、流程定义 我们定义一个请假流程 1.1、新建模型 1.2、开始节点 1.3、任务节点 1.4、结束节点 1.5、设置节点属性 指定标签名称&#xff1a;张三审批&#xff0c;节点任务负责人&#xff1a;zhangsan 指定标签名称&#xff1a;李四审批&#xff0c;节点任务负责人&#xf…

【稳定检索|投稿优惠】2024年公共服务、健康与医药国际会议(ICPSHM 2024)

2024年公共服务、健康与医药国际会议(ICPSHM 2024) 2024 International Conference on Public Services, Health, and Medicine(ICPSHM) 一、【会议简介】 ​2024年公共服务、健康与医药国际会议&#xff08;ICPSHM 2024&#xff09;将于三亚这片美丽的海滨城市盛大召开。我们诚…

【JAVA基础(对象和封装以及构造方法)】----第四天

对象和封装以及构造方法 面向对象和面向过程面向过程面向对象 类与对象及其使用定义类创建一个对象&#xff0c;操作类补充&#xff08;成员变量和局部变量&#xff09; private 修饰类 封装练习编写类编写测试输出结果 面向对象和面向过程 面向过程 在了解面向对象之前先来了…

线上BUG引起思考:package.json 中的 ^~ 该保留吗?

一、写在前面 一次线上项目 bug&#xff0c;引发了关于 package.json 中的 ^~ 是否该保留&#xff1f;保留可能引发的后果&#xff1f;以及如何在版本更新便利和版本更稳定中取舍的思考&#xff1f;这个 bug 是由于线上部署打包时&#xff0c;自己下载了最新依赖&#xff0c;于…

如何本地搭建Zblog网站并通过内网穿透将个人博客发布到公网

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站…

12.DHCP

DHCP 用户上网的时候&#xff0c;会从网卡发一个DHCP请求&#xff0c;是一个广播报文255.255.255.255&#xff0c;源地址是0.0.0.0 服务器得到请求后&#xff0c;返回给客户端一个地址 &#xff11;.在路由器开启DHCP功能 &#xff12;.配置地址池 3.指明给用户分配的网段…

制造企业MES管理系统可以和AI结合应用吗

在当今的数字化时代&#xff0c;人工智能AI和MES生产管理系统的结合将成为制造企业发展的重要趋势。这种结合可以为制造企业带来许多优势&#xff0c;如提高生产效率、降低成本、优化资源利用等。本文将探讨MES管理系统和AI的结合以及它们在制造企业中的应用&#xff0c;并分析…

Gateway网关-路由的过滤器配置

目录 一、路由过滤器 GatewayFilter 1.1 过滤器工厂GatewayFilterFactory 1.2 案例给所有进入userservice的请求添加一个请求头 Truthitcastis freaking awesome&#xff01; 1.3 案例给所有请求添加一个请求头 Truthitcastis freaking awesome&#xff01; 一、路由过滤器 …

鸿海携手Porotech共同开启Micro LED新篇章 | 百能云芯

近日&#xff0c;鸿海集团决定进一步强化其在Micro LED&#xff08;微发光二极体&#xff09;技术领域的实力。为此&#xff0c;鸿海宣布将与英国半导体企业Porotech展开战略合作&#xff0c;旨在共同开发MicroLED微显示器&#xff0c;并在AR&#xff08;扩增实境&#xff09;应…

Python学习之复习MySQL-Day8(事务)

目录 文章声明⭐⭐⭐让我们开始今天的学习吧&#xff01;事务简介事务操作模拟转账操作开启事务提交事务回滚事务查看/设置事务提交方法实例演示 事务四大特性并发事务问题分类 事务隔离级别分类查看/设置事务隔离级别实例演示 文章声明⭐⭐⭐ 该文章为我&#xff08;有编程语…