【Unity每日一记】角色控制器Character Contorller

在这里插入图片描述


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

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

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏:Unity基础实战

🅰️



文章目录

    • 🅰️
    • 前言
    • 🎶(==1==) 角色控制器Character Contorller主要参数
    • 🎶(==2==) 角色控制器Character Contorller的实践
    • 🅰️


前言

在Unity中,角色控制器(Character Controller)是一个用于控制角色移动和碰撞的组件。它是一种不依赖于物理引擎的方式来控制角色的移动,因此可以提供更加灵活和精确的控制。
角色控制器主要用于第三人称游戏中的角色移动,如角色的行走、奔跑、跳跃等。它通过使用简单的函数来实现角色的移动,包括Move()函数用于移动角色,SimpleMove()函数用于施加重力。
另外,角色控制器还提供了一些相关的属性和函数,用于控制角色与其他物体的碰撞检测和响应。例如,可以使用isGrounded属性来检测角色是否接触到地面,使用Move()函数来推动角色并与其他物体发生碰撞。
需要注意的是,角色控制器是一种比较简单的移动方式,适用于一些简单的角色移动需求。对于复杂的物理碰撞和运动效果,可以使用Rigidbody组件来实现。

  • 角色控制器是让角色可以受制于碰撞,但是不会被刚体所牵制,角色控制器会让角色表现的更加稳定,排除可能因为刚体出现的在斜坡上自己滑动或者被撞飞

  • Unity提供了角色控制器脚本专门用于控制角色

    添加后:
    无需再添加刚体
    能检测碰撞函数
    能检测触发器函数
    能被射线检测


🎶(1 角色控制器Character Contorller主要参数


在这里插入图片描述

  • 1.是否接触地面——isGrounded();
  • 2.受重力移动 —— SimpleMove();
  • 3.不受重力移动——Move();
  • 4.碰撞器检测函数——OnControllerColliderHit(ControllerColliderHit hit)

1.取消Animator组件中的允许位移的功能勾选

在这里插入图片描述

  • 加入角色控制器之前——不随镜头向前移动(上帝视角)

rigidbody.MovePosition( transform.localPosition + moveDerictor * velocity * Time.deltaTime); //速度*方向 = 向量
在这里插入图片描述

  • 加入角色控制器之后——可以跟随镜头而向前移动(第一人称视角)

    player.SimpleMove( transform.forward + moveDerictor*velocity *Time.deltaTime );

在这里插入图片描述


🎶(2 角色控制器Character Contorller的实践


在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//-------------------------------------
//—————————————————————————————————————
//___________项目:       ______________
//___________功能:  玩家的移动
//___________创建者:___秩沅____
//_____________________________________
//-------------------------------------
public class PlayerMove : MonoBehaviour
{private float vertical;private float horizontal;private float mousePosition;private CharacterController player; //角色控制器private Vector3 moveDerictor;       //移动的方向public  float  velocity = 2f;       //移动的速度public  float roVelocity = 10f;private Animator playerAnimatior;private void Awake(){player = GetComponent<CharacterController>();playerAnimatior = GetComponent<Animator>();}private void FixedUpdate(){vertical   =  Input.GetAxis("Vertical") ;horizontal =  - Input.GetAxis("Horizontal") ;mousePosition = Input.GetAxis("Mouse X");//旋转transform.localRotation *= Quaternion.Euler(0, mousePosition * roVelocity, 0);if (vertical != 0 ||horizontal != 0){        //移动playerAnimatior.SetFloat("SpeedWS", (int)vertical);playerAnimatior.SetFloat("SpeedAD", (int)horizontal);moveDerictor = new Vector3(vertical, 0, horizontal);print(moveDerictor.normalized);/// moveDerictor = moveDerictor.normalized;   //将方向变成单位向量//transform.position= transform.position + moveDerictor.normalized*Time .deltaTime ;player.SimpleMove(transform.forward * vertical );player.SimpleMove(transform.right * -horizontal);//GetComponent<Rigidbody>().MovePosition( transform.localPosition + moveDerictor * velocity * Time.deltaTime); //速度*方向 = 向量//此时物体并非跟着自己的旋转方向进行移动而是根据自身位置进行改变//(白话:无法变成FPS的第一视角进行当前视角当前前进)       }}private void MouseRotation(){}}

🅰️


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

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

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

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

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

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

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


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


在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2813658.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

动态规划(简单习题)

数字三角形 Number Triangles 首先我看到这个题目就在思考应该用怎样一个数据结构来存放这些数据&#xff0c;是二叉树&#xff0c;还是并查集那样的连接。 第二个问题这个使用动态规划应该怎样构建状态转移方程&#xff0c;使用dfs来遍历然后使用一个数组来存放最大价值吗&…

wps 365 批量修改.xlsx、.xls,单元格内容的格式为yyyy-mm-dd

xlsx、xls文件导入校验单元格内容格式有误&#xff0c;批量修改步骤如下 1.选中要修改内容的单元格列 2.选择数据-分列-分列&#xff0c;弹出“文本分列向导”弹窗 3.选择“下一步”——“下一步”到步骤3&#xff0c;在“列数据类型”中选中日期-YMD格式&#xff0c;点击“完成…

【C++进阶】深入了解继承机制

目录 前言 1. 继承的概念 2. 继承的定义 3. 继承中基类与派生类的赋值转换 4. 继承中的作用域 5. 派生类的默认成员函数 6. 继承与友元、静态成员 7. 多继承与菱形继承 7.1 如何解决 前言 继承是面向对象编程中的一个重要概念&#xff0c;也是面向对象编程语言中普遍存在的特…

主数据管理是数字化转型成功的基石——江淮汽车案例分享

汽车行业数字化转型的背景 在新冠疫情导火索的影响下&#xff0c;经济全球化政治基础逐渐动摇。作为全球最大的汽车市场&#xff0c;我国的汽车市场逐渐由增量转为存量市场。 在数字化改革大背景下&#xff0c;随着工业4.0时代的到来&#xff0c;江淮汽车集团力争实现十四五数…

BFS中的双向广搜和A-star

双向广搜 190. 字串变换 - AcWing题库 import java.util.*;public class Main{static int N 6, n 0;//规则数不超过6个&#xff0c;n表示规则数量static String[] a new String[N];//字串a&#xff0c;用于规则变换static String[] b new String[N];//字串b&#xff0c;用…

2.2 RK3399项目开发实录-使用USB线缆升级固件(物联技术666)

2.1. 前言 本文介绍了如何将主机上的固件&#xff0c;通过USB数据线烧录到 AIO-3399J 开发板的存储器中。升级时&#xff0c;需要根据主机操作系统和固件类型来选择合适的升级方式。 2.2. 准备工具 AIO-3399J 开发板 固件 主机 良好的双公头USB数据线数据线 2.3. 准备固件 …

leetcode 2.合并两个有序链表

1..题目&#xff1a;合并两个有序链表&#xff1b; 2.用例&#xff1a; 3.解题思路&#xff1a; &#xff08;1&#xff09;函数头&#xff1a;参数是两个链表&#xff1b;返回值为 链表指针 ListNode*&#xff1b; &#xff08;2&#xff09;函数体&#xff1a; 1.首先比较…

python学习笔记-内置异常

概述 Python 中的异常&#xff08;Exception&#xff09;是指在程序执行过程中遇到的错误或异常情况。当程序出现异常时&#xff0c;解释器会停止当前代码的执行&#xff0c;并试图找到匹配的异常处理器来处理异常。如果没有找到合适的异常处理器&#xff0c;程序就会终止并打…

PDF文件转换为图片

现在确实有很多线上的工具可以把pdf文件转为图片&#xff0c;比如smallpdf等等&#xff0c;都很好用。但我们有时会碰到一些敏感数据&#xff0c;或者要批量去转&#xff0c;那么需要自己写脚本来实现&#xff0c;以下脚本可以提供这个功能~ def pdf2img(pdf_dir, result_path…

搭建Facebook直播网络对IP有要求吗?

在当今数字化时代&#xff0c;Facebook直播已经成为了一种极具吸引力的社交形式&#xff0c;为个人和企业提供了与观众直接互动的机会&#xff0c;成为推广产品、分享经验、建立品牌形象的重要途径。然而&#xff0c;对于许多人来说&#xff0c;搭建一个稳定、高质量的Facebook…

【Godot4.2】菜单栏生成函数库menuDB

概述 关于Godot的手动菜单栏制作&#xff0c;我已经在之前的文章中有所描述。 但是对于一些场景&#xff0c;手动制作菜单仍然是一个比较低效的做法。所以我将MenuBar以及基于HBoxContainerMenuButton创建菜单栏写成了一个静态函数库。 利用此函数库我们可以用函数形式构造P…

前后端分离vue+php仓库管理系统 n2bm6

1.功能需求 &#xff08;1&#xff09;系统功能包括 &#xff1a;产品入出库登记、确认入出库信息、删除库内信息、借出信息登记、产品分类管理、&#xff0c;报表生成&#xff0c;事件记录&#xff0c;数据检测、数据警告。 &#xff08;2&#xff09;系统管理员功能&#xf…

基于JSP的毕业设计选题系统的设计与实现

基于JSP的毕业设计选题系统的设计与实现 (源代码论文) A. 项目简介 毕业设计选题系统就是能够使学生通过互联网完成毕业设计课题的选定&#xff0c;它采用Web方式&#xff0c;同时适用于局域网和Internet&#xff0c;它要实现审核&#xff0c;权限管理&#xff0c;邮件通知…

C# OpenCvSharp DNN Yolov8-OBB 旋转目标检测

目录 效果 模型信息 项目 代码 下载 C# OpenCvSharp DNN Yolov8-OBB 旋转目标检测 效果 模型信息 Model Properties ------------------------- date&#xff1a;2024-02-26T08:38:44.171849 description&#xff1a;Ultralytics YOLOv8s-obb model trained on runs/DOT…

有适合短视频剪辑软件的吗?分享4款热门软件!

在数字时代&#xff0c;短视频已成为人们获取信息、娱乐消遣的重要形式。随着短视频行业的蓬勃发展&#xff0c;市场上涌现出众多短视频剪辑软件&#xff0c;它们功能各异&#xff0c;各具特色。本文将为您详细介绍几款热门短视频剪辑软件&#xff0c;助您轻松掌握短视频剪辑技…

BIO实战、NIO编程与直接内存、零拷贝深入辨析

BIO实战、NIO编程与直接内存、零拷贝深入辨析 长连接、短连接 长连接 socket连接后不管是否使用都会保持连接状态多用于操作频繁&#xff0c;点对点的通讯&#xff0c;避免频繁socket创建造成资源浪费&#xff0c;比如TCP 短连接 socket连接后发送完数据后就断开早期的http服…

phpldapadmin This base cannot be created with PLA

phpldapadmin This base cannot be created with PLA 1、问题描述2、问题分析3、解决方法&#xff1a;创建根节点 1、问题描述 安装phpldapadmin参考链接: https://blog.csdn.net/OceanWaves1993/article/details/136048686?spm1001.2014.3001.5501 刚安装完成phpldapadmin&…

MyCAT从入门到实战(MyCAT2注释配置)

重置配置 /* mycat:resetConfig{} */; 用户相关 创建用户 /* mycat:createUser{ "username":"user", "password":"", "ip":"127.0.0.1", "transactionType":"xa"} */; 删除用户 /* myc…

软件License授权原理

软件License授权原理 你知道License是如何防止别人破解的吗&#xff1f;本文将介绍License的生成原理&#xff0c;理解了License的授权原理你不但可以防止别人破解你的License&#xff0c;你甚至可以研究别人的License找到它们的漏洞。喜欢本文的朋友建议收藏关注&#xff0c;…

Maya笔记 设置工作目录

Maya会把素材场景等自动保存在工作目录里&#xff0c;我们可以自己定义工作目录 步骤1 创建workspace.mel文件 文件/设置项目 ——>选择一个文件夹&#xff0c;点击设置——>创建默认工作区 这一个后&#xff0c;可以在文件夹里看到.mel文件 步骤2 自动创建文件夹…