项目实训(十)FPS游戏之移动,跑步,跳跃,下蹲等


前言

FPS游戏之移动,跑步,跳跃,下蹲等
FPCharacterControllerMovement 该脚本用于获取玩家的输入行为,根据相应的按键输入等对角色的移动进行控制。


一、如何让角色移动

首先判断是否在地面

if (characterController.isGrounded)
        {
    
    
            var tmp_Horizontal = Input.GetAxis("Horizontal");
            var tmp_Vertical = Input.GetAxis("Vertical");
            movementDirection =
                characterTransform.TransformDirection(new Vector3(tmp_Horizontal, 0, tmp_Vertical)).normalized;

用move函数设置物体的重力

 movementDirection.y -= Gravity * Time.deltaTime;
        var tmp_Movement = CurrentSpeed * Time.deltaTime * movementDirection;
        characterController.Move(tmp_Movement);

二、如何让角色按 shift 键奔跑

在unity中修改速度,判断是否按左边的shift键,如果按了则执行经改造后的增快的速度
请添加图片描述

if (isCrouched)
            {
    
    
                CurrentSpeed = Input.GetKey(KeyCode.LeftShift) ? SprintingSpeedWhenCrouched : WalkSpeedWhenCrouched;
            }
            else
            {
    
    
                CurrentSpeed = Input.GetKey(KeyCode.LeftShift) ? SprintingSpeed : WalkSpeed;
            }

三、如何让角色按“C”键下蹲

1.需要使用携程函数

协程:协程是一个分部执行,遇到条件(yield return 语句)

时才会挂起,直到条件满足才会被唤醒继续执行后面的代码。

 private IEnumerator DoCrouch(float _target)
    {
    
    
        float tmp_CurrentHeight = 0;
        while (Mathf.Abs(characterController.height - _target) > 0.1f)
        {
    
    
            yield return null;
            characterController.height =
                Mathf.SmoothDamp(characterController.height, _target,
                    ref tmp_CurrentHeight, Time.deltaTime * 5);
        }
    }

2.判断是否下蹲

判断是否蹲下,将 isCrouched 重置为对立状态,按下C键后,如若为下蹲状态,则可获取到下蹲状态的高度,并将其制为下蹲状态

 if (Input.GetKeyDown(KeyCode.C))
            {
    
    
                var tmp_CurrentHeight = isCrouched ? originHeight : CrouchHeight;
                StartCoroutine(DoCrouch(tmp_CurrentHeight));
                isCrouched = !isCrouched;
            }

四、如何让角色按空格键下蹲

 if (Input.GetButtonDown("Jump"))
            {
    
    
                movementDirection.y = JumpHeight;
            }

猜你喜欢

转载自blog.csdn.net/qq_45856546/article/details/125191352