当前位置: 首页 > article >正文

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

在这里插入图片描述


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

👨‍💻 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#专题篇】—核心章题单实践练习


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


在这里插入图片描述



http://www.kler.cn/a/134078.html

相关文章:

  • MySQL系列之如何在Linux只安装客户端
  • 图像处理实验二(Image Understanding and Basic Processing)
  • idea 解决缓存损坏问题
  • Lucene 和 Elasticsearch 中更好的二进制量化 (BBQ)
  • Mit6.S081-实验环境搭建
  • hadoop大数据平台
  • 技术贴 | SQL 执行 - 执行器优化
  • 【六袆 - MySQL】SQL优化;Explain SQL执行计划分析;
  • WPF位图效果
  • 详解ssh远程登录服务
  • 基于卡尔曼滤波实现行人目标跟踪
  • 【广州华锐互动VRAR】VR元宇宙技术在气象卫星知识科普中的应用
  • 什么是AIGC
  • JS原生-弹框+阿里巴巴矢量图
  • 【论文阅读笔记】Supervised Contrastive Learning
  • 小迪笔记(1)——操作系统文件下载反弹SHELL防火墙绕过
  • 疑似openAI的BUG
  • 结构体——C语言初阶
  • 飞天使-django之数据库简介
  • 汽车 CAN\CANFD数据记录仪
  • 【LeetCode刷题-树】--1367.二叉树中的链表
  • 什么是PWA(Progressive Web App)?它有哪些特点和优势?
  • spark算子简单案例 - Python
  • 关于DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC的一些发现
  • 自学嵌入式,已经会用stm32做各种小东西了
  • 小米路由器AX1800降级后的SSH登录和关墙等命令