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

一、前言

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

二、前期知识

三种实现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");
        var tmp_MouseY = Input.GetAxis("Mouse Y");
        CameraRotation.y += tmp_MouseX
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值