当前位置:   article > 正文

一个简简单单的基于CharacterController的第一人称射击FPS角色控制器的实现——Unity随手记(2021.1.19)_charactercontroller.simplemove实现跳跃

charactercontroller.simplemove实现跳跃

由于之前期末了一直在装备考试,随手记已经很久没有写了。今天开始用Unity整一个第一人称射击游戏出来。项目实现参考教程:制作属于你自己的第一款第一人称射击(FPS)游戏


今天实现的内容:

  • 基于CharacterController的第一人称移动功能,了解了一下CharacterController.Move和CharacterController.SimpleMove的区别CharacterController中Move和SimpleMove的区别

  • 重力效果(不拟真)

  • 跳跃效果跳跃受当前运动状态影响

  • 冲刺效果,更快的移动速度

  • 下蹲效果,通过改变CharacterController.Height来实现,拥有独立的下蹲行走速度和下蹲冲刺速度。


BUG以及缺陷:

我这个写法标准嘛?我也不知道,但是能用了。


值得注意的:

冲刺判断时考虑到了移动情况,避免在原地不动时按下冲刺键也能跳到冲刺高度。

要注意将得到的movementDirection的模长设置为1,可以使用normalize。这样做是为了避免在Horizontal和Vertical都有输入时导致的模长大于1位移变大,也就是斜着走时速度变快的情况。注意不能在模长小于0时设置。

我专门做了一个参数来判断是否正在下蹲/站起,正在下蹲/站起时不能再切换状态,这是为了防止协程冲突,暂时没有更好的办法了。


代码:

基于CharacterController

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FPCharacterControllerMovement : MonoBehaviour
{
   
    //-----------------------------------------------------运动-----------------------------------------------------------------//
    // 走路的速度
    public float walkSpeed = 10f;
    // 奔跑的速度
    public float sprintingSpeed = 20f;
    // 重力
    public float grivaty = 9.8f;
    // 跳跃高度
    public float jumpHeight = 2f; 
    // 下蹲之后的高度
    public float crouchHeight = 1f;
    // 站立时的高度
    [HideInInspector]
    public float originHeight;
    // 下蹲时的冲刺的速度
    public float crouchWalkSpeed = 5f;
    public float crouchSprintSpeed = 5f;
    // 当前在冲刺
    [HideInInspector]
    public bool m_isSprinting;
    // 当前是否蹲下了
    [HideInInspector]
    public bool m_isCrouched;
    // 当前是否正在蹲下/起立 用于协程控制
    [HideInInspector]
    public bool m_isDoCrouching;

    // 对CharacterController的引用
    private CharacterController m_characterController;
    // 对Transform的引用
    private Transform m_characterTransform;
    // 移动的方向
    private Vector3 m_movementDirection;
    // 当前使用哪个速度(Walk or Sprint)
    private float
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/118719
推荐阅读
相关标签
  

闽ICP备14008679号