Unity CharacterController移动与跳跃

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函数检测进行判断,但是这种方式有一点问题,即人物跳起了但是在某段时间内依旧为在地面上,影响了后续判断。而通过对垂直方向移动两种情况的分析,我们可以得出上升过程中不需要进行地面检测,便可获得一下代码,以下代码即使在踏空情况下依然能够进行。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值