Unity3D - 【Animator】骨骼动画的实现

利用Animator实现骨骼动画:

1> 确保人物能够正常移动、Camera能够正常跟随

2> 使用WSAD对人物不同运动状态进行切换与连接

3> LeftShift:加速、Space:跳跃

4> 对于移动所产生的场景旋转以及视野跟随问题解决,可以参考我的另一篇文章:https://blog.csdn.net/qq_42292831/article/details/84400575

5> 模型资源下载请访问游戏蛮牛官网 ( http://www.manew.com )

****************************************************************************************************************************************

 

一:运行效果

 

二:操作以及注意事项

0> 首先需要在Anumator中选择自己新建的Animator Controller文件:

1> 在Project中的动画文件夹中创建Animator Controller (状态控制机),双击打开

2> 设置左侧这些Float变量的目的:

拿W_Code举例:

当W键按下时,W_Code的键值就会变为1,松开按键,键值为0,这样人物的状态会切换为Walk状态;而且因为W还在Input.GetAxis("Vertical")的影响下沿着世界坐标的Z轴移动,Idle->Walk之间的切换完全依靠W键来确定。

3> 右侧箭头表示各个动作之间可以转换的方向与条件

这里就拿Run->Jump这个箭头举例,在Run的状态下当出现Jump_Code>0(1)时,就会触发跳跃动画

4> 注意事项:

在本Demo中出现了这样的情况:给人物与其他物体均添加的刚体属性,而且Camera属于人物的子物体,当两个刚体碰撞,Camera视角会莫名出现旋转。

取消被碰撞物体的刚体属性即可解决这种问题;

 

三:Scripts

1> 视角跟随:直接将Camera作为人物的子物体即可实现Camera的视角跟随

2> 视角移动:右键实现Camera视野左右移动(上下可将代码中的欧拉角指向y,但是范围过大而且无法更改,这里使用了x)

      因为Camera是作为人物的子物体,所以将该脚本直接拖动到人物上将会直接是人物转向与Camera转向同步;

  Camera_Follow.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Camera_Follow : MonoBehaviour {public Transform Camera;bool Model_IsRotate = false;// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {if (Input.GetMouseButtonDown(1)){Model_IsRotate = true;}if (Input.GetMouseButtonUp(1)){Model_IsRotate = false;}if (Model_IsRotate){transform.RotateAround(transform.position, Vector3.up, 10 * Input.GetAxis("Mouse X"));Vector3 originPosition = Camera.position;Quaternion originRotation = Camera.rotation;Camera.RotateAround(transform.position, transform.right, -10 * Input.GetAxis("Mouse Y"));if (Camera.eulerAngles.x < 0 || Camera.eulerAngles.x > 50)    //不明觉厉的欧拉角,但是能够设置x/y值来达到仰视和俯视的效果{Camera.position = originPosition;Camera.rotation = originRotation;}}}
}

3> 人物移动 (控制Animator键值进行状态转换)

Roko_Movement.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;public class Roko_Movement : MonoBehaviour {//public NavMeshAgent agent;public Animator anim;public float wsad_MoveSpeed = 10;bool Space_Key_Down = false;bool Left_Shift_Key_Down = false;bool W_Key_Down = false;bool S_Key_Down = false;bool A_Key_Down = false;bool D_Key_Down = false;// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {//if(Input.GetMouseButtonDown(0))//      {//          Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//          RaycastHit hit;//          if(Physics.Raycast(ray,out hit))//          {//              agent.SetDestination(hit.point);//          }//      }float h = Input.GetAxis("Horizontal");float v = Input.GetAxis("Vertical");this.transform.Translate(new Vector3(h, 0, v) * Time.deltaTime * wsad_MoveSpeed);//W键控制行走if (Input.GetKeyDown(KeyCode.W)){W_Key_Down = true;}if (Input.GetKeyUp(KeyCode.W)){   W_Key_Down = false;}if (W_Key_Down){anim.SetFloat("W_Code", 1f);}if (!W_Key_Down){anim.SetFloat("W_Code", 0f);}//S键控制后退if (Input.GetKeyDown(KeyCode.S)){S_Key_Down = true;}if (Input.GetKeyUp(KeyCode.S)){S_Key_Down = false;}if (S_Key_Down){anim.SetFloat("S_Code", 1f);}if (!S_Key_Down){anim.SetFloat("S_Code", 0f);}//A键控制左转if (Input.GetKeyDown(KeyCode.A)){A_Key_Down = true;}if (Input.GetKeyUp(KeyCode.A)){A_Key_Down = false;}if (A_Key_Down){anim.SetFloat("A_Code", 1f);}if (!A_Key_Down){anim.SetFloat("A_Code", 0f);}//D键控制左转if (Input.GetKeyDown(KeyCode.D)){D_Key_Down = true;}if (Input.GetKeyUp(KeyCode.D)){D_Key_Down = false;}if (D_Key_Down){anim.SetFloat("D_Code", 1f);}if (!D_Key_Down){anim.SetFloat("D_Code", 0f);}//Left_Shift键加速if (Input.GetKeyDown(KeyCode.LeftShift)){Left_Shift_Key_Down = true;}if (Input.GetKeyUp(KeyCode.LeftShift)){Left_Shift_Key_Down = false;}if (Left_Shift_Key_Down){anim.SetFloat("Speed_up_Code", 1f);}if (!Left_Shift_Key_Down){anim.SetFloat("Speed_up_Code", 0f);}//Space键控制Jumpif (Input.GetKeyDown(KeyCode.Space)){Space_Key_Down = true;}if (Input.GetKeyUp(KeyCode.Space)){Space_Key_Down = false;}if (Space_Key_Down){anim.SetFloat("Jump_Code", 1f);}if (!Space_Key_Down){anim.SetFloat("Jump_Code", 0f);}//anim.SetFloat("Speed", agent.velocity.magnitude);}
}

 

【2019.01.20】更新

关于跳跃部分:

改进效果:按一下Space键,跳跃执行一次(不会在跳跃中途终止),并实现跳跃结束动作与其他动作的完美衔接。

首先设置终止时间,然后拖动时间进度条,使得在跳跃动画未结束的时候执行向Idle动画的返回,以实现动画的过渡。

 

 

 

 

----------------------人物模型下载:游戏蛮牛官网 ( http://www.manew.com )----------------------

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

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

相关文章

Unity-动画系统_Avatar系统

利用Avatar系统&#xff0c;我们可以通过对骨胳操控实现动画的重利用效果&#xff0c;这也就是Mecanim系统中的动画重定向功能。 Avatar工作原理 对于人类角色来说&#xff0c;都包含着相同或者类似的骨骼。而Avatar&#xff0c;可以对角色中包含的骨骼结构或者角色模型进行分…

Unity之人物骨骼动画

一、导入 a、先把主模型以下面这种形式导入&#xff1a;在Project面板下右键空白地方->选择import new assert->选择主模型导入 b、把其他非主模型的资源包括动画等直接复制然后黏贴到工程目录下相关目录下 c、在b黏贴的过程中会出现是否覆盖已有资源&#xff0c;选择…

animation动画及3D

一、animation动画 animation动画简介 animation实现动画主要由两个部分组成 通过类似Flash动画的关键帧来声明一个动画 在animation属性中调用关键帧声明的动画实现一个更为复杂的动画效果 浏览器支持 属 性 名 IE Firefox Chrome Opera Safari anim…

3D模型在unity中实现动画效果

将资源拖放到Create中。如图我的资源是Ani&#xff0c;放到我的Resources文件中。 将模型ZebraLP拖到Scene面板上,这样Hierarchy面板上,就会出现ZebraLP文件. 二&#xff1a;创建 Avatar&#xff0c;&#xff08;一般动物可以共用同一个&#xff0c;人物可以共用同一个&#xf…

Unity2D 官方骨骼动画Anima2D使用方法

Anima2D是一款Unity官方出的骨骼动画制作插件。使用方法如下&#xff1a; 1.下载插件 我们可以从unity编辑器内的AssetStore内下载到Anima2D插件&#xff0c;并导入到Unity编辑器中。记住&#xff0c;下载该插件需要将Unity版本升级到5.60以上。 2.导入我们自己需要创作的素材…

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

目录 &#x1f7e5; 本节效果展示 &#x1f7e7; Unity基础配置 &#x1f7e8; 配置人物的Animator组件 1️⃣将人物放置到场景 2️⃣ 创建AnimatorController 3️⃣ 配置AnimatorController &#x1f6a9; 添加AnimationClip &#x1f6a9; 设置切换AnimationClip的条…

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;…