Unity怎么添加character controller的

Unity怎么添加character controller的,第1张

首先每个物体都必须拥有的一个不可移除的组件是Transform组件。我们可以通过改变物体的位置进行移动,那如果遇到墙面,遇到一些地形,又不想让人物移动的时候穿墙,穿模,该如何处理呢?

第一种方法我们可以通过物理引擎来控制,也就是Rigidbody组件。

第二种方法我们可以通过角色控制器来控制,也就是CharacterController组件。

角色控制器组件也属于物理组件,在Physic物理属性下,我查资料显示角色控制器主要用于第三人称和第一人称游戏主角(人形为主)的控制。它们的区别在于,如果我用了刚体组件,有两种状态,collider或者trigger。如果用了前者,我们碰撞的时候会被撞飞,我们不想要这种物理效果,但是用trigger又无法阻挡。所以这种情况我们可以使用角色控制器。

参数介绍

<1>Slope Limit

斜率限制,控制角色最大的爬坡斜度。我图中设置的是45度,也就是说45度以上的斜坡角色控制器就爬不上去了

<2>Step Offset

台阶高度,控制角色可以迈上最大的台阶高度。图中我设置的可爬台阶高度是2.83,超过就爬不上去了。但是这里报错了。说台阶高度必须小于等于高度+半径*2要不然会出错。

<3>Skin Width [默认即可]

皮肤厚度,在角色的外围包裹着一层“皮肤”,设置这层皮肤的厚度。

数值调大,最明显的就是角色和地面之间的间距变大,也就是角色皮肤变厚了。

<4>Min Move Distance [默认即可]

最小移动距离,默认是 0.001,也就是 1 毫米。

如果该数值调大,因为我们在代码中用的是轴来控制移动,轴来控制移动的特点就是每一帧移动的距离非常小,所以调大角色达不到最小移动距离。角色控制器就不会移动。

<5>Center/Radius/Height

角色控制器组件在 Scene 面板中体现为一个“胶囊碰撞器”的形状。

Center:控制中心点的位置;Radius:控制半径;Height:控制高。

其实在unity中我们正真控制的是碰撞器的移动旋转。我们所看到的只是一个外衣我感觉是这样的。一个游戏物体附加了角色控制器组件后,和角色控制器组件共存的其他的碰撞器组件是处于“无效”状态。和场景中其他物体的交互碰撞,是以角色控制器组件的边缘进行判断的。

事件函数

OnControllerColliderHit(ControllerColliderHit hit)函数

可以通过 hit 获取到角色碰撞器碰撞到的物体的信息。

//使用角色碰撞器调用的触发碰撞的事件

void OnControllerColliderHit(ControllerColliderHit col)

{

Debug.Log(col.transform.name)//打印输出碰撞到的物体的名字

}

常用方法

在物体上添加CharacterController组件后再使用此方法就可以实现人物具备碰撞效果但是不会有物理效果啦。

以上就是角色控制器的介绍以及使用啦,按步骤来 *** 作对小白来说也是相对简单的,只要注意一些文中说明的细节,现在就开始行动起来一起学unity吧。

1、首先导入一个角色模型:将模型放到空节点下。

2、其次将上一章的脚本挂到空节点player下,并添加CharacterController组件。

3、最后添加进去两个动作,并且设置好转换即可。

使用方法:

1、创建一个Unity3D工程,命名为Hero,选择3D,右下角创建项目。

2、在AssetStore中下载一些免费的素材,场景和人物。按Ctrl+9打开AssetStore,搜索RPGHeroPBRHPPolyart下载素材(图片展示的是已经下载过了直接是Import,正常会先显示DownLoad。),下载完之后点Import导入。

3、点击Importd出下列d窗,选择右下角Import,准备工作就完成了,可以在Project面板中看到我们的素材。

4、把我们的人物模型拖到界面中,找到RPGHero→Prefabs,里面三个任选一个即可。

5、养成好的习惯,在Asset文件夹下创建一个新的文件夹命名为Scripts。

6、在Scripts文件夹下创建两个C#脚本,一个命名为Follow,另一个命名为Player。

7、将脚本分别拖拽给MainCamera和我们的人物RPGHeroHP。

8、双击打开Follow脚本进行代码编写,这个代码是让相机跟随我们的人物。

9、将人物拖拽给我们定义的Player,改变相机的位置让他在一个合适的位置。

10、给人物添加CharacterController组件。

11、调整胶囊体的大小使其刚好包住人物,在右侧Center是调整胶囊体的位移,Height是缩放胶囊体的高度,注意上面MinMoveDistance调成0,这是最小位移,避免其值过大导致人物无法移动。

12、双击打开Player代码进行人物代码编写。

13、将人物进行下图所示的拖拽,将检测半径(也就是CheckRadius)设置为0.3。

14、给地板添加层级,要添加层级,点开层级的下拉菜单选择Addayer,添加我们的Ground。

15、添加完层级后将Plane的层级改为Ground,把人物的地面层级选项也改为Ground。

16、打开Animator面板,在上方Window→Animation→Animator,打开后设置了许多动画,用不到这么多,框选住这些右键Delete删掉,在右边文件夹中选择我们需要的拖拽到里面。

17、选中Idle然后右键点击MakeTRansiton创建联系,每两个动画中之间要有两个箭头。

18、在左边先添加检测变量,点击加号选择Float并命名为speed。

19、点击Idle到Walk的箭头,点击右边Conditions的加号添加判断条件,Greater表示大于,Less表示小于,这里选大于,也就是当速度为0时人物动画从静止到走动。

20、在Setting设置中可以调节他们动画的过度时间。Unity是实时3D互动内容创作和运营平台。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意变成现实。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11261141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存