什么?UnityLearn入门项目也不懂?不用怕,我会出手

3D Beginner: Tutorial Resources | John Lemon’s Haunted Jaunt: 3D Beginner 项目详解(参考官方文档)

文章的目的在于将UnityLearn项目中的一些值得注意的点,以及未展示图片演示的地方进行一个更为详细的整理总结.为项目过程中出现错误不知道如何下手的朋友的排忧解难.

开始前的准备

此unity官方项目下载地址(官方教程的链接也在其中)

3D Beginner: Tutorial Resources | Tutorials | Unity Asset Store

将其保存至我的项目中

创建3D空核心项目,我的版本为2021.1.11f1c1

在Window的Package Manager中下载导入项目

1.保存场景

创建一个名为 MainScene 的场景资源。

2.添加角色模型

JohnLemon游戏对象拖入scene

JohnLemon对象的内部

JohnLemon 在本质上形成动画的方式如下:角色父游戏对象上的 Animator 组件将改变所有骨骼游戏对象 Transform 组件的旋转,这些改变将一起发生以形成角色的动画。

3.什么是预制件?

4.将角色转化为预制件(放入Prefebs文件夹)

5.动画化您的角色(只是说准备要动画化,并未有操作)

6.创建 Animator Controller(在相应文件夹Animator中创建)

7.设置动画

JohnLemon游戏对象已经是预制件了吗

进入预制件模式禁用Auto Save复选框(启用此复选框会降低速度)

给游戏对象JohnLemon添加动画,可以看到有Animator组件了,需要创建一个Animator Controller

在相应的位置创建好后,去寻找动画资源,将其拖动到Animator窗口中

在Parameters中创建一个bool量,名为LsWalking,用来判断游戏对象是否在走路,用于过渡参数

现在,状态机中有两个状态,但是没有逻辑用于定义应播放的状态.当前,状态机将以默认状态启动,并且永远不会改变,因此JohnLemon将始终处于空闲状态,为了添加一些逻辑,需要创建Animator过渡.

8.创建 Animator 过渡

右键Make Trasition 创建过渡

单击连接线进入Insperctor,将Has Exit Time复选框取消,如果 Has Exit Time 为 true(启用此复选框),则在经过一定时间后,将自动进行过渡,并且状态机将播放下一个状态。在此游戏中,控制过渡的时间很重要,因此请禁用 Has Exit Time 复选框。

9.向过渡添加条件

下面将添加条件提供过渡

Conditions中添加条件

从walk到idle,清空正相反,自行完成.

10.将 Animator Controller 分配给 JohnLemon 预制件

将Animator Controller拖动到游戏对象的Animator组件的Controller属性

11.使角色对物理产生反应

下面给游戏对象添加物理效果

启动Play,嗯,结果不太对:角色跌落一小段距离后停了下来。请再次按 Play 按钮退出播放模式。

这是由 Animator 引起的。Animator 组件上的第三个属性是 Apply Root Motion,该属性当前已启用。Root motion(根运动)

12.什么是根运动 (Root Motion)?

13.什么是更新循环?

14.修复 John Lemon 的移动问题

进入游戏对象的prefab模式,在Animator中更改UpdateMode为Animate Physics(此前为Normal)

此更改将使 Animator 通过物理适时移动角色。现在,在移动角色的更新循环之间应该没有竞争,并且角色将对物理设置产生应有的反应。

您已经看到动画没有任何垂直的根运动,但这不会阻止 JohnLemon 与某些对象碰撞后发生垂直移动。有几种方法可以阻止这种情况。

最明显的选择是禁用 Rigidbody 组件上的 Use Gravity:

这样可以防止角色跌落,但这并不是您想要的。禁用 Use Gravity 的情况下,如果碰撞将角色下推,则该角色仍可能跌落;如果碰撞将角色上推,则该角色会漂走。您肯定不希望发生这种情况,因此您需要使用物理来限制角色的移动。

找到 RigidBody 组件,然后单击箭头以展开 Constraints 属性。这些 Constraint 属性会限制刚体 (Rigidbody) 的移动方向。让我们探索一下 Unity 的坐标系,以准确了解其工作原理。

15.Unity 中的坐标

Unity 中的位置和方向采用 x、y 和 z(它们一起构成一个矢量)表示的 3D 坐标。在下一教程中,您将发现有关矢量的更多信息。一个场景具有这些方向的全局定义,在 Scene 窗口的右上方可以看到。

彩色箭头表示每个轴的正方向,而相反的灰色箭头表示负方向:

  • x 轴为红色
  • y 轴为绿色
  • z 轴为蓝色

16.位置和旋转

人物的高度不应变化,所以应该Freeze position Y

人物不应正面和侧面躺下,所以应该Freeze RotationX,Z

17.向 John Lemon 添加碰撞体

下面给游戏对象添加一个碰撞体(Collider)

最适合 JohnLemon 的最简单形状是胶囊碰撞体 (Capsule Collider),而非Box Collider。

调整合适大小

18总结:

您已经开始处理游戏角色。您初步了解了预制件的功能,并创建了一组简单的规则来约束 JohnLemon 的行为。

猜你喜欢

转载自blog.csdn.net/m0_59069134/article/details/127791722