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

本文详细指导如何在Unity中创建player角色,设置Camera视角,添加Collider组件,编写PlayerController脚本以实现角色移动和相机控制,以及禁用默认MainCamera。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步

需要一个场景和一个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,在属性面板上取消勾选

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值