unity【动画】操作_角色动画控制器 c#

news2025/2/26 19:07:34

首先我们打开一个项目

在这个初始界面我们需要做一些准备工作

导入资源

添加URP渲染管线

在Window下的包管理器搜索Universal RP 点击安装

这样再将Model机器人拖拽至场景有是有颜色的了

下面对这个资源对象的Inspecter每一个属性进行介绍

首先是Model

在这个资源对象的Inspecter最下方可以用鼠标向上拉动获取这个模型场景

我们可以在这个场景中用鼠标左键移动观察这个模型

接下来是Rig :骨架配置的地方

在动画类型下选择最新班Humanoid

Legacy是旧版我们不用

利用新版Humanoid可实现动画的重定向

选择好之后可以点击配置configure

点击之后 进入 unity会自动匹配骨架系统

其中Mapping是动画骨骼绘制地图

而Muscles Settings 是 肌肉设定

了解之后我们开始做项目首先需要一些准备工作

将资源加载到场景中

将资源模型拖拽至场景 完全解压缩后改名为Player

将多种同一部位隐藏

留下一个打开渲染管线

相同操作完成

接下来我们找到手中的武器可以选择是否隐藏

在层级下输入Hand 选择后 按Esc 即可自动找到对应位置

左手也如此,的那这里我们还是将他们取消 因为我们想后期通过代码控制切换武器

接下来双击动画控制器

按住鼠标中键可移动动画单元

在这里我们想自己创建一个动画器 首先将动画器Animator Controller 设置成None

接下来我们在自定义创建的AnimatorController文件包下创建一个动画器

改名为PlayerAC(角色动画控制器)

接下来我们要实现:

按键1设置人物(按0(空手),1,2,3)可以切换武器,

按键2设置切换战斗状态,在战斗状态下可以奔跑,

按键3在战斗状态下设置攻击

我们屡以下逻辑,如想完成该动画器,可以需要三个按键:

int型WeaponID武器编号,

bool型isIdle是否闲置,

isTrigger是否触发攻击,

接着我们需要三个层级状态机:

0层根状态机,

需要一个【自定义空状态武器编号WeaponID】 指向 【自定义空手子状态】进入下层

1层状态机中间层状态机,

指向 闲置状态 指向 非战斗状态NonCombat 和 战斗状态Combat两种状态 进入下层状态机

同时因为夹在中间的1层状态机需要返回层级,则返回状态 指向 闲置状态

2层状态机非战斗状态,

指向 闲置状态 双向 行走状态,并且 闲置状态 和 行走状态 都 指向 退出

2层状态机战斗状态,

指向 闲置状态 双向 跑步状态 双向 攻击状态 ,并且 闲置状态 和 跑步状态 都 指向 退出

屡清逻辑我们开始实现

首先创建   自定义空状态   作为武器选择改名为WeaponID

创建   自定义子状态   作为空手状态,也就是没有武器状态

改名为UNArms

双击进入下一层状态机

选择已设状态动画UNIdle空手状态闲置状态 拖拽 至1层动画机

创建   自定义子状态   非战斗状态NonCombat

接下来应该设置 UNIdle 和 NonCombat的连线,但在设置线之前我们需要一个参数Parameters

来控制 UNIdle 和 NonCombat 之间的指向     

添加参数 isCombat

接下来设置线

接下来点击线 线会变成蓝色

这样设置线表明UNIdle状态 在是否战斗状态为错下 指向非战斗状态

反之

同样方法做战斗状态

双击进入2层非战斗状态状态机

首先我们需要拖拽一个   已设状态动画UNIdle空手状态闲置状态   作为入口指向,

再拖拽   已设状态动画UNWalkF空手状态行走状态   等待双向切换,

对UNIdle状态 和 UNWalkF状态 设置线

在设置线前我们需要一个参数   bool类型的isIdle   是否闲置(闲置即为角色停止下的放松状态)

设置线

接下来 UNIdle状态 和 UNWalkF状态都需要连接 Exit退出状态才能返回上级完成循环

设置线

这里可以思考一下,现在是非战斗状态层级状态机 如果想退出该层级状态机,

只需要将线设置成 是否战斗状态为对 就可以

同样,

接下来我们进入2层战斗状态层级状态机

同样我们拖拽一个   已设状态动画UNIdle空手状态闲置状态

再拖拽   已设状态动画UNCombatRunF空手战斗状态奔跑状态

设置线

同样作为末尾层级需要连接Exit退出状态才可以返回上级完成循环

我们再将   已设状态动画   UNAttack空手攻击状态拖拽至场景

此时在设置线前我们需要添加一个参数   Trigger类型的Attack   触发攻击

设置线

回到根0层状态机

我们发现在设置线之前需要一个参数 int类型的WeaponID武器编号

我们回到1层状态机修改桥梁   已设状态动画UNIdle为Opt   作为选择时的已设闲置状态

回到0层状态机

设置线

接下来我们取消各个层级状态机所有连线的Has Exit Time退出时间

重点:除了攻击状态 指向 的连线

制作好状态机后将自定义状态机PlayerAC挂载到Player对象身上

修改2层级战斗状态状态机

运行即可完成空手状态下的任意姿势

同样操作我们加入武器1   Dual

同样过程我们可以将Dual武器的状态机做出来

那么这样还不能完成武器从0空手到1携带武器的跳转过程

我们需要:

进入0空手状态下的2层非状态层级状态机

设置线 在武器编号WeaponID不等于0的状态下 回到根页面

行走状态如果想在行走状态下可以切换武器那么就加这条线:

同样进入0空手状态层级2层战斗状态机

设置线

取消新添加线的退出时间

这样就完成了WeaponID由0到1的转换,但是却不能由1再返回0,所以我们需要在Dual的2层下继续添加线

进入Dual的2层非战斗状态状态机

设置线

同样

进入Dual的2层战斗状态状态机

设置线

也取消新添加线的退出时间

即完成了0转1转0循环的转换

运行即完成实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1126585.html

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

相关文章

NewStarCTF2023week4-逃(反序列化字符串逃逸)

打开链接,大致审一下php代码,是反序列化相关的; 结合题目提示,很典型的字符串逃逸; 并且属于替换修改后导致序列化字符串变长的类型; 看似加了一个waf函数对我们提交的内容进行了过滤替换,实…

【引流技术】最新头条全自动引流脚本,解放双手自动引流【引流脚本+技术教程】

软件功能: 评论点赞 适用于自己做头条号,去别人评论区截留,点赞,别人会收到提醒,达到回访效果 文章/视频评论 可以自己发布引流文章或视频,引导进你主页或者私信你,达到引流效果 设备需求: 安卓手机8.1及以上系统 文章分享者:Linxiaoyu…

2023年中国汽车覆盖件模具竞争格局、市场规模及行业需求前景[图]

汽车覆盖件模具是汽车车身生产的重要工艺装备,其设计和制造时间约占汽车开发周期的 2/3,是汽车换型的重要制约因素之一。汽车覆盖件模具具有尺寸大、工作型面复杂、技术标准高等特点,属于技术密集型产品。汽车覆盖件模具按以其冲压的汽车覆盖…

pymavlink简单使用

环境 windows10 python3.11 pymavlink2.4.40 工具 虚拟串口工具 Virtual Serial Port Driver 6.9 串口/网络调试助手 sscom5.13.1.exe 串口通信 虚拟串口 COM1, COM2 调试助手连接COM2 pymavlink连接COM1 from pymavlink import mavutil import timeconnect mavut…

ES在企业项目中的实战总结,彻底掌握ES的使用

通过之前两篇文章 了解了ES的核心概念和基础使用学习进阶的DSL语法处理复杂的查询 这段时间通过在本企业代码中对ES框架的使用,总结了不少经验。主要分为三点 企业封装了ES原生的api,需要使用企业项目提供的接口实现 -------简单使用(本章节目…

AutoDev 1.4 规模化 AI 研发辅助:团队 Prompts、自定义活文档、代码检视

在过去的两个月里,随着 Thoughtworks 内部的大规模 AI 辅助软件交付(AI4SoftwareDelivery)的展开 —— 在全球,有上千名的 Thoughtworker 这一个涉及不同角色、不同地区,以及几十场内部分享的活动。 我们也在 AutoDev …

【Leetcode】单链表 ---移除链表元素(创建虚拟头节点)

移除链表元素 移除链表元素题目思路图解创建虚拟头结点删除操作 代码 移除链表元素 题目: 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 题目思路 题目思路: …

acme.sh签发和部署ZeroSSL泛域名证书

大家好,我叫徐锦桐,个人博客地址为www.xujintong.com。平时记录一下学习计算机过程中获取的知识,还有日常折腾的经验,欢迎大家访问。 介绍 acme.sh 是个开源的shell证书生成脚本,他可以自动生成Let’s Encrypt 的证书…

【Spring Cloud Alibaba】seata分布式事务官方入门案例导读1(实战版)

文章目录 1. 业务介绍1.1. 用例1.2. 架构图1.3. 3个服务的代码及业务逻辑(略) 2. SEATA 的分布式交易解决方案3. 由Dubbo SEATA提供支持的示例(实战)3.1. 步骤 1:建立数据库,如seata数据库3.2. 步骤 2&…

速锐得解码匹配特斯拉电动汽车安全性能检测车架号及BMS电池数据

电动汽车三大件分别是电池、电机和电控。到目前为止,电机技术已经非常成熟,直流永磁电机、永磁同步电机已经取代了异步电机,成为电动汽车的主流。很多人认为电动汽车最后一道技术门槛是电池,但在我国,汽车制造商在制造…

VMware虚拟机中ubuntu网络连接不上

VMware虚拟机中ubuntu中网络连接不上 解决方案其他虚拟机网络 解决方案 1.选择VMware中编辑-虚拟网络编辑器-更改: 设置为你喜欢的模式,这里为NET模式 2.选中ubuntu虚拟机(关机后的虚拟机),点击:编辑虚拟机…

微信视频号的项目玩法,视频号好物分享,只要你会剪辑,就可以去操作

今天我给大家分享一个超有趣的项目玩法——视频号好物分享! 你知道吗,不论是在抖音还是快手、小红薯,这类好物分享账号都是非常流行的。 不过,现如今这些账号已经不再只是简单的分享,而是有目的地进行推荐,…

【面试经典150 | 哈希表】快乐数

文章目录 写在前面Tag题目来源题目解读解题思路方法一:哈希集合判重方法二:快慢指针判重 其他语言python3 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为…

【COMP305 LEC6 LEC 7】

LEC 6 Topic 2. The McCulloch-Pitts Neuron (1943) 1. What kind of propositions can be represented by a single MP neuron (without time)? OR: 中间那条线就是 a1 a2 1 分成了两半:1. on the line 和 above the line 2. below the line …

【计算机网络】NAT机制的工作流程

网络地址转换(NAT)是一种将私有IP地址转换为公共IP地址的技术,它使得私有网络中的主机可以在互联网上与外部主机进行通信。NAT机制在路由器或专用NAT设备上配置,可以用于家庭、小型企业或大型企业的网络环境中。本文将总结NAT机制…

flutter开发实战-打包应用apk签名及Android studio没有generate signed bundle/apk问题修改

flutter开发实战-打包应用apk签名及Android studio没有generate signed bundle/apk问题修改 最近使用flutter开发项目,需要将打包应用时候apk进行签名,我这边开发使用的是Android studio,发现在Android studio的build没有generate signed bu…

读高性能MySQL(第4版)笔记18_扩展MySQL

1. 增长 1.1. 在高速的业务环境中,流量可能逐年增长几个数量级,环境会变得更加复杂,随之而来的数据需求也会快速增加 1.2. 扩展Web服务器 1.2.1. 在负载均衡的后端添加更多的服务器节点,而这通常就是扩展We b服务器的全部工作 …

【银河麒麟系统】备份还原工具显示“备份分区空间不足,请删除过期或者不需要的备份”解决方法

一.问题的现象 在进行银行麒麟V10的系统备份时,会因为所需备份的系统过大导致备份分区容量不足导致备份失败的情况: 二.解决方法 该问题的处理思路与之前写过的一篇文章:【linux】把home目录挂载到其他分区(数据盘/data等&#xf…

Day8力扣打卡

打卡记录 查找和替换模式&#xff08;哈希表 / find函数查询重复程度&#xff09; 链接 1.hash表双映射检测是否存在相同映射。 2.利用string的find函数返回下标来检测对应字符串的重复程度(妙)。 class Solution { public:vector<string> findAndReplacePattern(vect…

Web APIs——事件监听以及案例

1、事件监听 什么是事件&#xff1f; 事件是在编程时系统内发生的动作或者发生的事情 比如用户在网页上单击一个按钮 什么是事件监听&#xff1f; 就是让程序检测是否有事件产生&#xff0c;一旦有事件触发&#xff0c;就立即调用一个函数做出响应&#xff0c;也称为绑定事…