【0到1学习Unity脚本编程】第一人称视角的角色控制器-LMLPHP


👨‍💻个人主页@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏【0到1】Unity脚本游戏开发宝典

🅰️




第一人称视角的角色控制器


🎶() 场景创建


【0到1学习Unity脚本编程】第一人称视角的角色控制器-LMLPHP


🎶() 相机设置


  • 将摄像机变为胶囊体的子物体,按住 ctrl +shift +F 调整视野。让他变成胶囊体的眼睛
    【0到1学习Unity脚本编程】第一人称视角的角色控制器-LMLPHP

🎶() 初步脚本


【0到1学习Unity脚本编程】第一人称视角的角色控制器-LMLPHP

  • 判断要前进时按照哪个方向前进,一般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;  //乘上一个四元数就相当于进行了旋转     
    }
}

【0到1学习Unity脚本编程】第一人称视角的角色控制器-LMLPHP


🎶() 优化脚本


  • 优化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;  //乘上一个四元数就相当于进行了旋转     
    }
}

【0到1学习Unity脚本编程】第一人称视角的角色控制器-LMLPHP

🅰️


【Unityc#专题篇】之c#进阶篇】

【Unityc#专题篇】之c#核心篇】

【Unityc#专题篇】之c#基础篇】

【Unity-c#专题篇】之c#入门篇】

【Unityc#专题篇】—进阶章题单实践练习

【Unityc#专题篇】—基础章题单实践练习

【Unityc#专题篇】—核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!


【0到1学习Unity脚本编程】第一人称视角的角色控制器-LMLPHP


11-20 08:09