Unity3D笔记第十四天——角色控制器

来源:互联网 发布:java的对象是什么 编辑:程序博客网 时间:2024/06/16 13:44
角色控制器(Character Controller)
Unity中封装了一个非常好用的组件来实现第一人称视角与第三人称视角的控制,我们称之为角色控制器组件(Character Controller)。


Character Controller属性
高度(height):角色的胶囊碰撞体 (Capsule Collider) 高度
半径(Radius):胶囊碰撞体 (Capsule Collider) 半径长度
斜坡限制(Slope Limit):将碰撞体 (Collider) 限制为仅爬上等于或小于指示值的斜坡
台阶偏移(Step Offset):仅当阶梯比指示值更接近地面时,角色才会走上阶梯
最小移动距离(Min Move Distance):如果角色尝试移动的距离小于指示值,则它完全不移动。这可以用于减少抖动。
皮肤宽度(Skin width):两个碰撞体 (Collider) 可以互相穿透的深度为其“皮肤宽度”(Skin Width)。较大“皮肤宽度”(Skin Width)


可减少抖动。较小“皮肤宽度”(Skin Width)可能导致角色卡住。良好设置是使此值为“半径”(Radius) 的 10%。
中心(Centre):这会使胶囊碰撞体 (Capsule Collider) 在世界坐标空间中偏移,不会影响角色旋转方式。


Charactr Controller资源包
首先打开Unity游戏引擎编辑器,然后在Project视图中右键,选择Import Package -> Charactr Controller(角色控制器)把它导入我们的


工程中


第一人称视角
在Project视图中将FirstPerson Controller预制体拖拽入Hierarchy(层次视图)中。
第一人称视角的实现原理是在游戏场景中创建了一个胶囊体的游戏对象,并且给胶囊体对象身上绑定了一个摄像机,摄像机对象如图所示,


它绑定 在”Frist Person Controller”物体上。此时主摄像机已经不起作用,所以可以禁用或删除主摄像机。


第三人称视角
在Project视图中将3rd Person Controller拖拽入Hierarchy视图中。第三人称视角需要使用场景中的主摄像机。
如果不小心将主摄像机的删掉的话。可重新创建一个Camera,在Inspector视图中设置其tag为MainCamera即可。将此摄像机绑定在Third 


Person Camera 脚本的 Camera Transform 变量处。


角色控制器常用脚本
“MouseLook”脚本是实现通过鼠标控制第一人称视角的移动视图
“CharacterMotor”脚本通过监听键盘事件,控制第一人称的主角的 “前”、“后”、“左”、“右”的移动
“FPSInputController”脚本监听“Space”等按键实现第一人称主角的运动效果


Character Controller常用属性
isGrounded:判断角色是否接触地面,返回Bool值
velocity:角色当前速度
detectCollisions:其他刚体和角色控制器是否能够与本角色控制器相撞


SimpleMove和Move的区别
Move:角色以一定的速度移动
SimpleMove:每次都绝对移动
Move()方法适用于所有方向上的移动,其参数是按距离移动的,并且每帧只能调用一次,在使用此方法时,需要自己添加重力因素。而


SimplMove()方法只适用于水平方向上的移动,其参数是按速度移动的,此方法在Update()方法中执行,调用此方法时,重力会被自动应用,


使用此方法的物体会被前方的一切物体挡住。


OnControllerColliderHit应用
角色控制器(Character Controller)不会对加在它自身上的力做出反应,不会自动推开其他刚体,也不会被其他对象的物理效果影响。若


要角色控制器能够推开其他刚体或者对象,需要在对象附加的脚本中添加OnControllerColliderHit()函数,这样对它们施加力就能够产生碰


撞。
0 0
原创粉丝点击