unity3d实现第一人称射击游戏之CS反恐精英(三)(人物旋转限制和跳跃功能(消除连跳,碰撞消除,高度稳定))

本文介绍了在Unity3D中如何实现第一人称射击游戏中的人物旋转限制,防止过大的抬头角度,以及人物跳跃功能,包括消除连跳、高度稳定和碰撞消除反作用力的细节。通过限制视角角度、添加向上力和处理碰撞来确保游戏体验的真实性和稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1旋转限制

上文实现的代码,我们的人物可以后空翻和前空翻,这不是我们想要的,所以我们需要对视角进行限定。

先分析一下,人物抬头不能让他超过某个角度,也就是抬头的时候我们人物的z轴和世界的y轴的夹角不能小于15度(我自己定义的),左右因为是沿着世界的y轴旋转所以不会有问题。下面看代码实现。

      //自身坐标的z轴与世界的y轴要小于某个角度,负方向也是如此
        if (Vector3.Angle(this.transform.forward, Vector3.up)<=15&& MouseY>0 ) {
            MouseY = 0;
        }
        if (Vector3.Angle(this.transform.forward, -Vector3.up) <= 15 && MouseY < 0 )
        {
            MouseY = 0;
        }
        this.transform.Rotate(-MouseY * rotateSpeed * Time.deltaTime, 0, 0);

其中Mousey是鼠标上下移动的input,使用Vector3.Angle(自身z轴向量,世界y轴向量)得到两个向量的夹角,当夹角小于15度的时候,我们将它移动的input设置为0.反方向的话用-y和自身z轴的夹角去判断。

2人物跳跃()

人物跳跃物品们可以直接修改物体的position但是效果假,也可以加lerp去模拟弹跳曲线实现,但是有点麻烦,可以直接给物体添加一个向上的力,来模拟人物跳跃。下面看代码

private void JumpAndSquat() {
        //判断物体在y轴方向的移动速度
        IsJump = this.GetComponent<Rigidbody>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值