当前位置:   article > 正文

Unity实现第一人称移动(胎教级教学)

Unity实现第一人称移动(胎教级教学)

第一步

需要一个场景和一个player作为操作角色,并且在player子目录创建一个camera作为视角

这里演示我就随便创建一个plane作为地面一个sphere作为player

然后调整好player的位置不要与地面镶嵌就像这样

然后需要给地面(你们自己的场景)和player添加一个Collider组件

在属性面板的Add Component添加

这个是碰撞体组件一般在Unity里创建3D物体会自动添加,不加会穿模

但是自己导入的模型需要自己添加,复杂的模型建议用Mesh Collider

同时要给player添加Character Controller组件

第二步

需要在Assets文件夹里创建一个Scripts文件夹用来保存脚本

然后在Scripts文件夹里创建一个脚本随你们命名,这里我命名为PlayerController

打开PlayerController脚本复制这个代码到里面,具体内容可以自己看一下改进

  1. using UnityEngine;
  2. /*
  3. @Author:Rekite
  4. */
  5. public class PlayerController : MonoBehaviour
  6. {
  7. CharacterController player; //定义角色控制器组件
  8. public new Transform camera; //新建一个camera对象用于放入所要实现的第一人称相机
  9. public float speed = 2f; //角色移动速度
  10. float x, y; //相机旋转x,y轴控制
  11. float g = 10f; //重力
  12. Vector3 playerrun; //控制玩家运动的向量
  13. void Start()
  14. {
  15. player = GetComponent<CharacterController>();//获取人物的角色控制器组件
  16. }
  17. void Update()
  18. {
  19. Cursor.lockState = CursorLockMode.Locked; // 锁定鼠标到视图中心
  20. Cursor.visible = false;//隐藏鼠标
  21. //控制玩家运动
  22. float _horizontal = Input.GetAxis("Horizontal");
  23. float _vertical = Input.GetAxis("Vertical");
  24. if (player.isGrounded)
  25. {
  26. playerrun = new Vector3(_horizontal, 0, _vertical);
  27. }
  28. playerrun.y -= g * Time.deltaTime;
  29. player.Move(player.transform.TransformDirection(playerrun * Time.deltaTime * speed));
  30. //使用鼠标来控制相机的视角的旋转
  31. x += Input.GetAxis("Mouse X");
  32. y -= Input.GetAxis("Mouse Y");
  33. transform.eulerAngles = new Vector3(0, x, 0);
  34. y = Mathf.Clamp(y, -45f, 45f);
  35. camera.eulerAngles = new Vector3(y, x, 0);
  36. //让相机z轴保持不变,防止相机倾斜
  37. if (camera.localEulerAngles.z != 0)
  38. {
  39. float rotX = camera.localEulerAngles.x;
  40. float rotY = camera.localEulerAngles.y;
  41. camera.localEulerAngles = new Vector3(rotX, rotY, 0);
  42. }
  43. }
  44. }

然后保存这个脚本回到Unity,点击player就能看到player属性面板

鼠标左击长按PlayerController脚本将脚本拖入player属性面版内

第三步

在player属性面板里找到PlayerController脚本组件

鼠标左击长按player子目录下的camera拖入PlayerController脚本组件里的camera属性框中

(这个Speed是player移动速度,可以自己调节)

(不想在属性面板显示速度的可以在脚本中将定义speed的public改为private)

最后

因为项目创建的时候自带了一个maincamera,我们需要禁用这个maincamera

点击Main Camera,在属性面板上取消勾选

完成这一步就能运行并实现第一人称视角移动了

代码中有些内容可以根据自己需求改

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/446894
推荐阅读
相关标签
  

闽ICP备14008679号