
👨💻个人主页:@元宇宙-秩沅
👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!
👨💻 本文由 秩沅 原创
👨💻 收录于专栏:【0到1】Unity脚本游戏开发宝典
⭐🅰️⭐
文章目录
- ⭐🅰️⭐
- ⭐第一人称视角的角色控制器⭐
- 🎶(==1==) 场景创建
- 🎶(==2==) 相机设置
- 🎶(==3==) 初步脚本
- 🎶(==4==) 优化脚本
- ⭐🅰️⭐
 
⭐第一人称视角的角色控制器⭐
🎶(1) 场景创建

🎶(2) 相机设置
- 将摄像机变为胶囊体的子物体,按住 ctrl +shift +F 调整视野。让他变成胶囊体的眼睛
  
🎶(3) 初步脚本

- 判断要前进时按照哪个方向前进,一般UnityZ轴为前后UnityX轴为左右,
- 判断要旋转,是按照哪个轴进行旋转(左右视角,是旋转Y轴,上下视角是旋转Z轴)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMove : MonoBehaviour
{
    [ExecuteAlways]
    private float  moveSpeed =  1f;
    [ExecuteAlways]
    private float  rotateSpeed = 1f;
    
    void Update()
    {
        Move();
    }
    private void Move()
    { 
        float xPosition = Input.GetAxis("Horizontal") * Time.deltaTime;  //水平轴向
        float zPosition = Input.GetAxis("Vertical") * Time.deltaTime;    //垂直轴向
        
        //旋转不用加TimedeleTime ,因为加上会变得很慢
        float YRotation = Input.GetAxis("Mouse X");
        float XRotation = -Input.GetAxis("Mouse Y");
       
        transform.position += new Vector3(xPosition ,0 , zPosition) * moveSpeed  ;
   
        Quaternion rotateAngle = Quaternion.Euler(XRotation, YRotation, 0);  //欧拉角转换成四元数
        transform.rotation *= rotateAngle;  //乘上一个四元数就相当于进行了旋转     
    }
}

🎶(4) 优化脚本
- 优化1:纵轴的视野,变化幅度太大,需要进行约束
- 优化2:点击开始时,隐藏鼠标,并将其固定到中央确保,开始时的屏幕是正的
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMove : MonoBehaviour
{
    [SerializeField]
    private float  moveSpeed =  5f;
    [SerializeField]
    private float  rotateSpeed = 1f;
    private void Start()
    {
        Cursor.visible = false; //鼠标隐藏
        Cursor.lockState = CursorLockMode.Locked;//将光标锁定到“游戏”视图的中心。
    }
    private void Update()
    {
        Move();
    }
    private void Move()
    { 
        float xPosition = Input.GetAxis("Horizontal") * Time.deltaTime;  //水平轴向
        float zPosition = Input.GetAxis("Vertical") * Time.deltaTime;    //垂直轴向
        
        //旋转不用加TimedeleTime ,因为加上会变得很慢
        float YRotation = Input.GetAxis("Mouse X");
        float XRotation = -Input.GetAxis("Mouse Y");
        
        //进行抬头约束(速度减慢的效果)
        XRotation = Mathf.Clamp(XRotation , -0.1f ,0.1f);
      
        transform.position += new Vector3(xPosition ,0 , zPosition) * moveSpeed  ;
   
        Quaternion rotateAngle = Quaternion.Euler(XRotation, YRotation, 0);  //欧拉角转换成四元数
        transform.rotation *= rotateAngle;  //乘上一个四元数就相当于进行了旋转     
    }
}

⭐🅰️⭐
⭐【Unityc#专题篇】之c#进阶篇】
⭐【Unityc#专题篇】之c#核心篇】
⭐【Unityc#专题篇】之c#基础篇】
⭐【Unity-c#专题篇】之c#入门篇】
⭐【Unityc#专题篇】—进阶章题单实践练习
⭐【Unityc#专题篇】—基础章题单实践练习
⭐【Unityc#专题篇】—核心章题单实践练习
你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!、




















