Unity动画☀️一、通过 StringToHash ,控制Animator

在这里插入图片描述

 目录

🟥 本节效果展示

🟧 Unity基础配置

🟨 配置人物的Animator组件

1️⃣将人物放置到场景

2️⃣ 创建AnimatorController

3️⃣ 配置AnimatorController

🚩 添加AnimationClip

🚩 设置切换AnimationClip的条件

🟩 柔和控制Animator的方法

1️⃣ 设置动画切换的连线

2️⃣ 设置动画切换的参数

3️⃣ 配置clip切换的条件

4️⃣ 代码实现人物行走

5️⃣ 代码实现人物奔跑

🟦 直接控制Animator的方法


🟥 本节效果展示

下面是本节要实现的目标:

  • 完成场景的搭建
  • 通过键盘,控制人物从静止状态,到走路,再到跑起来
  • 讲述控制物体运动的两种方式

🟧 Unity基础配置

这儿我们完成资源的导入,并打开场景。

模型的下载

模型:传送门

 将package拖入Unity,完成导入package

双击,打开文件夹中的 Origin 场景即可。

下图所示Origin场景为初始场景,我们可以从这个场景开始做起。

AnimationDemo为已经实现所有功能的场景。

🟨 配置人物的Animator组件

下面我们完成将我们要控制的人物放置到场景中,

并对他身上的Animator进行配置,方便我们使用代码,控制Animator,从而控制这个人物做出各种动作。

1️⃣将人物放置到场景

在 Project - Character 文件夹下,

将 DefaultAvatar 拖到层级面板 Hierarchy 即可

2️⃣ 创建AnimatorController

作用:

AnimatorController中可包含很多 AnimationClip,

AnimationClip是一个个的动画片段,控制模型这样运动。AnimatorController就像一个容器。

AnimationClip可以是美术同学做的,也可以是我们程序自己在Unity中做的动画。

若你的要控制的对象身上的Animator组件中,Controller属性中没有AnimatorController,就需要完成下面的操作:

创建AnimatorController:

在Project面板,右键 Create,创建AnimatorController。

将AnimatorController绑定在人物身上

拖动该 AnimatorController ,放置到拖到层级面板人物的 Animator 上

3️⃣ 配置AnimatorController

上面我们了解了,AnimatorController中有AnimationClip,

AnimationClip可由美术同学创建,也可由程序在Unity中创建。

下面我们使用的是美术同学做好的AnimationClip。

🚩 添加AnimationClip

双击 上面创建的 AnimationController,进入AnimationController的面板。

将Project中 DefaultAvatar@Idle、DefaultAvatar@Walk、DefaultAvatar@Run三个动画下的 AnimationClip,都拖到 AnimationController 面板。

🚩 设置切换AnimationClip的条件

unity播放Animator中的动画,有两种方式:

  • 直接播放AnimationClip
  • 通知Animator,告诉Animator可以切换到另一个AnimationClip

第二种方法和第一种方法相比,第二种方法动画会有融合,动画切换不生硬。

做游戏一般用第二种方法。

但我们要是做不那么需要柔和的效果(比如PLC),第一种方法足够了。

🟩 柔和控制Animator的方法

我们在Animator中设置参数,并设置动画片段切换的条件。

我们用代码改变这些参数,Animator就会自行完成动画片段的切换。

这样做两个Animation切换时会融合一部分,会使得动画切换更柔和。

1️⃣ 设置动画切换的连线

右键各个clip,Make Transition,完成下图所示连线

注意箭头方向。

比如Idle和Run的连线,箭头是指向Idle的,并且只有这一条线,没有从Idle指向Run的。

这意味着Run可以切换到Idle,Idle只能先切换到Walk,再切换到Run。

2️⃣ 设置动画切换的参数

如图所示,添加 float类型的 Speed 、bool 类型的 isSpeedup

这些参数下面我们会配置到上面的连线上。

动画只能满足了这些条件,才能切换。否则不能随意切换。

比如Idle到Walk,Speed的数值只有到0.5,才能切换到Walk。

3️⃣ 配置clip切换的条件

  • 下方展示了Idle-Walk的切换条件,是Speed>0.1。Walk-Idle的切换条件,是Speed<0.1
  • 配置 Walk-Run切换条件,是 isSpeedup为true。
  • 配置 Run-Walk切换条件,是 isSpeedup为false。
  • 取消所有连线的 Has Exit Time。若勾选,则意味着,只有当播放完该片段,才能切换到下一片段。而我们想立刻切换,当然要取消勾选。

4️⃣ 代码实现人物行走

创建如下脚本,挂载到层级面板的 DefaultAvatar 身上,运行游戏,按下W看看效果吧。

代码如下: 

using UnityEngine;public class Player : MonoBehaviour
{Animator anim;int speedID = Animator.StringToHash("Speed");void Start(){anim = GetComponent<Animator>();}void Update(){anim.SetFloat(speedID, Input.GetAxis("Vertical"));}
}

5️⃣ 代码实现人物奔跑

将上方创建的player脚本,改为如下内容,运行游戏,按下 Shift+W,看看效果吧。

using UnityEngine;public class Player : MonoBehaviour
{Animator anim;int speedID = Animator.StringToHash("Speed");int isSpeedupID = Animator.StringToHash("isSpeedup");void Start(){anim = GetComponent<Animator>();}void Update(){anim.SetFloat(speedID, Input.GetAxis("Vertical"));if (Input.GetKeyDown(KeyCode.LeftShift)){anim.SetBool(isSpeedupID, true);}if (Input.GetKeyUp(KeyCode.LeftShift)){anim.SetBool(isSpeedupID, false);}}
}

🟦 直接控制Animator的方法

这可用在不需要那么柔和显示动画效果上,

方法比 "四方法" 简单,容易操作。

当我们在Animator中配置好Animation后,Animator的配置部分就完成了。

不需要连线、设置参数什么的。

接下来只需要通过代码,就可以控制Animator了。

示例代码如下:

private void Start()
{//Walk为你想播放的Animation动画名称GetComponent<Animator>().Play("Walk");
}

大家还有什么问题,欢迎在下方留言!


 

在这里插入图片描述


如果你有 技术的问题  项目开发

都可以加下方联系方式

和我聊一聊你的故事🧡

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity核心7——2D动画

一、序列帧动画 &#xff08;一&#xff09;什么是序列帧动画 ​ 我们最常见的序列帧动画就是我们看的日本动画片&#xff0c;以固定时间间隔按序列切换图片&#xff0c;就是序列帧动画的本质 ​ 当固定时间间隔足够短时&#xff0c;我们肉眼就会认为图片是连续动态的&#…

动画三:2D转换(超详细!)

目录 一、了解2D转换 1.特点 2.优点 3.开启2D转换的语法及注意事项 二、2D转换的属性及其基本属性值 1.translate 平移 2.rotate() 旋转 3. transform-origin 设置变形原点 4.scale 缩放 5.skew() 倾斜 一、了解2D转换 1.特点 2D转换是通过css来改变元素的形状…

Unity 3D 人形角色动画(Avatar)||Unity 3D 导航系统||Unity 3D 障碍物

Unity 3D 人形角色动画&#xff08;Avatar&#xff09; Mecanim 动画系统适合人形角色动画的制作&#xff0c;人形骨架是在游戏中普遍采用的一种骨架结构。。 由于人形骨架在骨骼结构上的相似性&#xff0c;用户可以将动画效果从一个人形骨架映射到另一个人形骨架&#xff0c…

Unity3D之动画(Animation)的制作

实例说明&#xff1a; 忍者跑酷的player动画制作。。。这些都是用Sprite做的动画。。。 在prioject面板里的一组sprite里面点击&#xff0c;之后看属性面板的Sprite Editor对这组Sprite进行编辑。。。 下面先编辑一个idle状态的动画&#xff1a; 首先选择第一个Sprite然后拖到H…

Unity3D 游戏引擎之FBX模型的载入与人物行走动画的播放(十二)

Unity3D 游戏引擎之FBX模型的载入与人物行走动画的播放 雨松MOMO原创文章如转载&#xff0c;请注明&#xff1a;转载至我的独立域名博客雨松MOMO程序研究院&#xff0c;原文地址:http://www.xuanyusong.com/archives/532 3D 世界中自定义模型的使用恐怕是重中之重&#xff0c;因…

Unity - 官方2D动画(2D Animation Package)文档

本文由 祝你万事顺利 出品&#xff0c;转载请注明出处。 官方文档&#xff08;英文&#xff09;&#xff0c;2D Animation 在2019.3已经是正式发布的包了。此资源包是将Assets Store 中的Anima2D进行了整合&#xff0c;在老版本中可以使用Anima2D。 简介 2D Animation packag…

Unity 3D 动画系统(Mecanim)|| Unity 3D 人形角色动画(Avatar)

Unity 3D 动画系统&#xff08;Mecanim&#xff09; Mecanim 动画系统是 Unity 公司推出的全新动画系统&#xff0c;具有重定向、可融合等诸多新特性&#xff0c;可以帮助程序设计人员通过和美工人员的配合快速设计出角色动画&#xff0c;其主界面如下图所示。 Unity 公司计划…

Unity3D教程:fbx动画

Unity3D教程fbx动画。在官方提供的例子&#xff0c;可以找到主角的fbx文件。将此文件放到自己的Assets文件夹下&#xff0c;Unity3D中的Project面板会将其刷新出来&#xff0c;但是如下图所示&#xff0c;动作信息是没有经过分割的。一定要注意&#xff0c;不要选择Hierarchy面…

Unity3D类人动画humanoid animations

动画和Mecanim术语表 A Glossary of Animation and Mecanim terms Date:2013-05-24 11:01 Icon 图标 Term 术语 Description 描述Type of Concept 概念类型 Usage/Comments 用途/注释Animation Clip related terms 动画剪辑相关术语Animation Clip 动画剪辑Animation data that…

ChatGPT 工具论 我能用它做什么

​ 前言 bing版ChatGPT现在已经可以使用了。试用下来&#xff0c;相较于原版本ChatGPT&#xff0c;更加流畅&#xff0c;数据库也是最新的&#xff0c;在这里梳理下它能为我做什么。 1.搜索代码片段 我目前最想用过的功能就是这个&#xff0c;以前在CSDN上太难找到直接可以用…

给大家分享几个靠写代码赚钱的方法

微信搜 “涛哥聊Python” 点关注 设为 “星标”&#xff0c;每天下午 17:30&#xff0c;带你学Python&#xff01; 作者 mezod&#xff0c; 译者 josephchang10 来自&#xff1a;GithubDaily 如今&#xff0c;通过自己的代码去赚钱变得越来越简单&#xff0c;不过对很多人来说依…

宝塔webhook部署egg,并反向代理通过域名访问

文章目录 一、添加站点二、webhooks自动部署三、设置反向代理&#xff0c;通过域名访问 更多内容可参考我的博客 具体创建egg项目这里就不做过多叙述…请查看官网文档&#xff0c;本篇建立与已有egg仓库&#xff0c;宝塔的基础上。 一、添加站点 进入宝塔面板&#xff0c;点击…

安排,Nginx反向代理视频

来源&#xff1a; 来自网络&#xff0c;如侵权请告知博主删除&#xff0c;感谢????。 仅学习使用&#xff0c;请勿用于其他&#xff5e; 为什么要安排Nginx, Nginx 后端必会技能之一&#xff0c;虽然百度会告诉你怎么配&#xff0c;但是如果你自己学一遍的话&#xff0c;很…

Nginx关于视频播放反向代理

动机 这几天为了服务器上搭建的FileBrowser播放视频浏览了一堆资料,现在基本可以做个总结了. FileBrowser是一个开源的基于Web的文件管理器&#xff0c;它支持在Web浏览器中访问和管理本地和远程服务器上的文件。它提供了一个简单易用的界面来上传&#xff0c;下载&#xff0c;…

Nginx反向代理,让网页可以被别人访问

使用Nginx反向代理 1、下载Nginx   想要使用Nginx反向代理首先进入Nginx官网 http://nginx.org/2、在右侧选择download 3、选择自己操作系统的稳定版本 4、解压压缩包 5、进入html文件夹  把想要代理的网页替换文件夹中的index.html 6、回到nginx解压的主目录打开nginx.…

通过反向代理内网穿透访问视频监控

通过反向代理内网穿透访问视频监控 业务场景反向代理建立反向代理安装docker安装服务端安装客户端使用 穿透rtsp 业务场景 我们在客户的船上安装了监控设备&#xff0c;因为船只要横渡长江&#xff0c;长江南北属于不同的城市辖区&#xff0c;所以船在江中心时肯定会有4G基站变…

手把手教你搭建自己本地的ChatGLM

前言 如果能够本地自己搭建一个ChatGPT的话&#xff0c;训练一个属于自己知识库体系的人工智能AI对话系统&#xff0c;那么能够高效的处理应对所属领域的专业知识&#xff0c;甚至加入职业思维的意识&#xff0c;训练出能够结合行业领域知识高效产出的AI。这必定是十分高效的生…

网页在线沟通工具,网页即时聊天工具-ttkefu完全免费电话呼叫流程图

ttkefu的免费网页电话是怎么回事&#xff0c;应该怎么使用呢&#xff1f;都在哪里能加入免费电话 如图&#xff08;1&#xff09;在网站侧边加入免费电话 如图(2)在聊天咨询页面的网页电话 如图(3)点击打开网页电话&#xff0c;输入手机号或电话号。 &#xff08;图1&#xf…

ChatGPT和New Bing作为AI界新宠,两者有何异同

ChatGPT和New Bing是两个不同的实体&#xff0c;它们之间有一些区别也有一些相似之处。我先说说各自的特点&#xff0c;再汇总说说两者的异同点。 ChatGPT的特点&#xff1a; ChatGPT是一个基于神经网络的自然语言处理模型&#xff0c;能够自动生成自然语言响应。ChatGPT的模…

AI正在取代人工?ChatGPT这样说.....

随着ChatGPT的大火&#xff0c;对于AI机器人的讨论热度空前&#xff0c;它表现出的强大功能性&#xff0c;给当前多领域带来了更多发展可能性&#xff0c;但同时也为该模型带来的一系列技术伦理问题&#xff0c;争议也随之而来。 ChatGPT表现出的智慧与强大令人激动&#xff0…