CharacterController是unity中内置组件,使用需添加该组件
在CharacterController中,本文主要通过CharacterController中的move函数进行移动
整个脚本分为三个部分,视角旋转,水平移动,竖直移动
视角的旋转通过对鼠标的移动进行获取并处理得到
private void PlayerRotateViewControl()
{
transform.Rotate(Vector3.up * Input.GetAxis("Mouse X") * rotateSpeed * Time.deltaTime);
}
首先我们通过定义一个基础向量MoveVector3;此值即为move函数的参数,水平和竖直方向的位移将加到该值中体现出来。
水平方向的代码
float h = Input.GetAxisRaw("Horizontal");
float v = Input.GetAxisRaw("Vertical");
MoveVector3=(transform.forward*v+transform.right*h)*moveSpeed*Time.deltaTime;
在CharacterController中需要自行模拟重力的存在。
首先我们需要了解垂直方向的运动情况,分为两种
1、上升情况,且必须在isground情况下进行弹跳
2、下降情况
第一个问题便是人物是否踩在地面上,本文通过设置一个empty物体在脚底,并进行Physics.CheckSphere函数检测进行判断,但是这种方式有一点问题,即人物跳起了但是在某段时间内依旧为在地面上,影响了后续判断。而通过对垂直方向移动两种情况的分析,我们可以得出上升过程中不需要进行地面检测,便可获得一下代码,以下代码即使在踏空情况下依然能够进行。

最低0.47元/天 解锁文章
4420

被折叠的 条评论
为什么被折叠?



