IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity 3D项目 - 02 - 角色动画应用 -> 正文阅读

[游戏开发]Unity 3D项目 - 02 - 角色动画应用

Unity 3D项目 - 02 - 角色动画应用

一、常用代码

0.枚举

  • enum;和C语言类似,属于整形,自动累加。和C语言不一样,不同种类的枚举元素可以重名!!
enum MoveStatus_E				// 枚举,运动状态
{	
    BackwardsRight	= -3,		// 右后退
    BackwardsLeft	= -2,		// 左后退
    Backwards		= -1,		// 后退
    Ldile 			= 0,		// 原地
    Forwards 		= 1,		// 前进
    ForwardsLeft 	= 2,		// 左前进
    ForwardsRight 	= 3,		// 右前进
    Left 			= 4,		// 左
    Right 			= 5, 		// 右
}
MoveStatus_E MoveStatus = MoveStatus_E.Ldile;				// 创建枚举变量

enum SpeedStatus_E				// 枚举,速度状态
{
    Wlak = 0,					// 步行
    Run,						// 小跑
    Sprint,						// 疾跑
    Jump,						// 起跳
}		
SpeedStatus_E SpeedStatus = SpeedStatus_E.Wlak;				// 创建枚举变量

1.根据名字获取对象

// 通过对象名称(Find方法),再获取组件
player = GameObject.Find("/Casual1").transform; 	
PlayerAnim = PlayerTrans.GetComponent<Animator>();		
// 上下两行作用一样,标明trans可以借指object
// PlayerAnim = PlayerTrans.gameObject.GetComponent<Animator>();

2.获取键盘按键状态

if (Input.GetKey(KeyCode.W)) 			
	MoveStatus = MoveStatus_E.Forwards;				// 前进
else if (Input.GetKey(KeyCode.S))
	MoveStatus = MoveStatus_E.Backwards;			// 后退

3.设置动画参数

PlayerAnim.SetInteger("WlakState", (int)MoveStatus);// 最后转换类型赋值

如果想动画播放完毕就退出,可以建立返回过渡但不设立参数条件,保留退出时间等。

4.空间坐标转换

PlayerRigid.velocity = PlayerTrans.TransformDirection(vector_i);		// 赋值
PlayerRigid.rotation = Quaternion.LookRotation(-vector_i);		// 方向相反,所以使用负号

5.刚体运动

在大多数情况下,不应该直接修改速度,因为这可能导致行为失真 - 改用 AddForce 请勿在每个物理步骤中设置对象的速度,这将导致不真实的物理模拟。

PlayerRigid.velocity = PlayerTrans.TransformDirection(vector_i);		// 赋值
  1. 使用 Rigidbody.rotation 更改刚体的旋转会在下一个物理模拟步骤后更新变换。这比使用 Transform.rotation 更新旋转要快,因为 Transform.rotation 将导致所有附加的碰撞体重新计算其相对于刚体的旋转,而 Rigidbody.rotation 会直接将值设置到物理系统。

  2. 如果需要连续旋转刚体,请改为使用 MoveRotationMoveRotation 会考虑插值问题。

  3. 注意:使用世界空间。

if (PlayerRigid.rotation != Quaternion.LookRotation(-vector_i))
	PlayerRigid.rotation = Quaternion.LookRotation(-vector_i);	

6.AI导航

PlayerAgent.destination = vector_i;
agent.isStopped = true; // 是否启用静止状态 

7.时间差

escjump_time += Time.deltaTime;		// 累加时间

二、常用插件

三、文字版步骤

  1. 导入场景资源,并打包抠出;

官方商店-免费:Low Poly Farm Pack Lite;

注意:加载新资源时记得设置为通用渲染管线。

  1. 导入人物模型、动画资源,并加载模型预设;

官方商店-免费:日本動漫風角色 : 惠兒 (免費版 / 高中制服版 / 包含VRM);Basic Motions FREE;

  1. 安装插件Cinemachine;

官方商店-注册表内;

  1. 设置光照、灯光、环境等。
  2. 导入freeLook虚拟相机,设置目标、参数等;

注意:为人物设立新的空的对象坐标,设为追踪目标。调整跟随范围,防止距离抖动。

  1. 拷贝人物动画,避免源文件不可修改或被修改;

  2. 设置多层动画,同层动画的过渡关系;

  3. 设置动画参数,过渡条件;

注意:所有动画都不需要退出时间和过渡时间,会导致响应缓慢。返回上一状态时可以有过渡时间,酌情设置,比如跳跃返回。

  1. 设置地图的导航参数,添加可运动区域和不可运动区域,烘焙地图;

注意:设置导航时需要选择确切的地图对象,地图对象的空父类不可已。

  1. 添加人物导航组件、刚体组件、胶囊碰撞体组件(暂无用?)、脚本文件;

  2. 编写键盘输入获取的代码;

包含方向键WSAD、步行小跑键CTRL、疾跑Shift,和空格跳跃键Space。

  1. 编写切换动画参数的代码;

包含退出跳跃动画的判断;

  1. 编写刚体运动的代码;

尝试了添加力的方法,但是没有效果,不知为何,暂没找到原因。所以还是使用了旧方法,直接给速度。转向也是。

14.编写导航运动的代码;

可以选择导航时是否有多个方向的动画,因为导航会自动先朝向目标再移动,之前用Q版人物时感觉挺不错的。

四、视频版步骤

BGM:网易云免费下载

《末廣健一郎 - 終ワリノ歌》

《水瀬いのり,久保ユリカ - Endless Journey》

《久保ユリカ,水瀬いのり - 雨だれの歌》

五、总结

  1. 导航组件用在人形上感觉不太好,不知道哪里设置错了;
  2. 刚体选择经常卡死不能旋转,不知道是不是物理碰撞体卡主了,需要在编辑器里手动旋转一下才能继续旋转;
  3. 根据API手册的说明,不建议使用直接修改速度和角度;我也认为不太真实,但是使用添加力和力矩的方式不知为何无效果;
  4. 从主菜单切换进入第二个场景时,不知为何灯光直接暗了许多;如果直接从第二个场景启动则不会;

之前写的一篇关于镜头跟随和键盘移动的笔记:《Unity 知识点 - 3D游戏 - 视角跟随和键盘移动_Lovely_him的博客-CSDN博客

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-12-01 18:01:41  更:2021-12-01 18:03:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 23:44:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码