当前位置:   article > 正文

项目实训- 基于unity的2D多人乱斗闯关游戏设计与开发(八1、FPS——FPS角色控制)_基于unity实现滞空

基于unity实现滞空

一、前言

角色的移动、控制、下蹲等操作

二、前期知识

三种实现FPS Controller的区别:

  • Transform Translate
    Transform提供了一个Translate方法,允许物体移动,但是无物理碰撞
  • Rigid body+Capsule
    符合物理学,有物理碰撞,无法滞空运动,可与Physics Object交互
  • CharacterController
    有物理碰撞,提供的API相对多,无法与Physics Object互动,可实现滞空运动,提供多种运动效果例如slopes、steps等

三、制作FPS角色控制

使用Rigidbody&Capsule Colider制作FPS角色控制器

1、在场景中添加一个空物体,命名为FPController,并在该物体下创建一个Capsule,把Capsule Collider组件去掉

2、把场景中的Main Camera添加到FPController中,并将相机调整到capsule的高处

3、在FPController里添加Rigidbody,并取消勾选use gravity,并勾选freeze rotation的X、Z

4、使相机随鼠标环顾四周:

  • 由于鼠标左右移动对应着坐标系中的X轴,前后移动对应着Y轴,所以让相机上下移动需要改变X轴的值,左右移动需要改变Y轴的值
  • 创建新的脚本FPMouseLook,通过Input.GetAxis("Mouse X")取用户鼠标x轴的输入,通过Input.GetAxis("Mouse Y")去用户鼠标Y轴的输入,同时,需要Transform才能引用到camera的Rotation,start()初始化后,通过cameraTransform.rotation=Quaternion.Eular(0,tmp_MouseX,0)改变rotation的值,并设置好相机旋转是用户鼠标的旋转角度×灵敏度:cameraRotation.y+=tmp_MouseX*MouseSensitivity,此时可以实现左右旋转,实现上下旋转的区别是设置相机旋转需要-
    注意:这里需要通过project settings-input manager来自定义一个角色的值
  • 用vector2限制camera的最大角度最小角度,设置在一定角度之内环顾
        var tmp_MouseX = Input.GetAxis("Mouse X"
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/165245
    推荐阅读
    相关标签
      

    闽ICP备14008679号