第一步
需要一个场景和一个player作为操作角色,并且在player子目录创建一个camera作为视角
这里演示我就随便创建一个plane作为地面和一个sphere作为player
然后调整好player的位置不要与地面镶嵌就像这样
然后需要给地面(你们自己的场景)和player添加一个Collider组件
在属性面板的Add Component添加
这个是碰撞体组件一般在Unity里创建3D物体会自动添加,不加会穿模
但是自己导入的模型需要自己添加,复杂的模型建议用Mesh Collider
同时要给player添加Character Controller组件
第二步
需要在Assets文件夹里创建一个Scripts文件夹用来保存脚本
然后在Scripts文件夹里创建一个脚本随你们命名,这里我命名为PlayerController
打开PlayerController脚本复制这个代码到里面,具体内容可以自己看一下改进
using UnityEngine;
/*
@Author:Rekite
*/
public class PlayerController : MonoBehaviour
{
CharacterController player; //定义角色控制器组件
public new Transform camera; //新建一个camera对象用于放入所要实现的第一人称相机
public float speed = 2f; //角色移动速度
float x, y; //相机旋转x,y轴控制
float g = 10f; //重力
Vector3 playerrun; //控制玩家运动的向量
void Start()
{
player = GetComponent<CharacterController>();//获取人物的角色控制器组件
}
void Update()
{
Cursor.lockState = CursorLockMode.Locked; // 锁定鼠标到视图中心
Cursor.visible = false;//隐藏鼠标
//控制玩家运动
float _horizontal = Input.GetAxis("Horizontal");
float _vertical = Input.GetAxis("Vertical");
if (player.isGrounded)
{
playerrun = new Vector3(_horizontal, 0, _vertical);
}
playerrun.y -= g * Time.deltaTime;
player.Move(player.transform.TransformDirection(playerrun * Time.deltaTime * speed));
//使用鼠标来控制相机的视角的旋转
x += Input.GetAxis("Mouse X");
y -= Input.GetAxis("Mouse Y");
transform.eulerAngles = new Vector3(0, x, 0);
y = Mathf.Clamp(y, -45f, 45f);
camera.eulerAngles = new Vector3(y, x, 0);
//让相机z轴保持不变,防止相机倾斜
if (camera.localEulerAngles.z != 0)
{
float rotX = camera.localEulerAngles.x;
float rotY = camera.localEulerAngles.y;
camera.localEulerAngles = new Vector3(rotX, rotY, 0);
}
}
}
然后保存这个脚本回到Unity,点击player就能看到player属性面板
鼠标左击长按PlayerController脚本将脚本拖入player属性面版内
第三步
在player属性面板里找到PlayerController脚本组件
鼠标左击长按player子目录下的camera拖入PlayerController脚本组件里的camera属性框中
(这个Speed是player移动速度,可以自己调节)
(不想在属性面板显示速度的可以在脚本中将定义speed的public改为private)
最后
因为项目创建的时候自带了一个maincamera,我们需要禁用这个maincamera
点击Main Camera,在属性面板上取消勾选
完成这一步就能运行并实现第一人称视角移动了文章来源:https://www.toymoban.com/news/detail-849723.html
代码中有些内容可以根据自己需求改文章来源地址https://www.toymoban.com/news/detail-849723.html
到了这里,关于Unity实现第一人称移动(胎教级教学)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!