Unity(2022.3.41LTS) - 角色控制器和3D刚体

目录

一. 角色控制

二. 3D刚体



一. 角色控制

名称:功能:
坡度限制将碰撞器限制为仅爬升比指示值更陡峭(以度为单位)的斜坡。
步长偏移只有当楼梯离地面比指示值更近时,角色才会爬上楼梯。此值不应大于 Character Controller 的高度,否则将生成错误。
蒙皮宽度两个碰撞体可以相互穿透,深度可达其 Skin Width (蒙皮宽度)。较大的 Skin Width 可减少抖动。低 Skin Width 会导致角色卡住。一个好的设置是将该值设为 Radius 的 10%。
最小移动距离如果角色尝试移动到指示值以下,则它根本不会移动。这可用于减少抖动。在大多数情况下,此值应保留为 0。
中心这将在世界空间中偏移胶囊碰撞体,并且不会影响角色的旋转方式。
半径胶囊碰撞体半径的长度。这实际上是碰撞体的宽度。
高度角色的胶囊碰撞器
高度。更改此设置将沿 Y 轴在正方向和负方向上缩放碰撞体。

Character Controller(角色控制器)

  1. 功能特点:

    • 主要用于模拟角色的基本运动,如行走、跑步、跳跃等,而不依赖于物理引擎的刚体。
    • 可以方便地控制角色与场景中的物体进行碰撞检测,避免角色穿透墙壁等物体。
    • 提供了一些内置的属性和方法,用于设置角色的速度、重力、碰撞响应等。
  2. 主要属性:

    • Slope Limit:限制角色可以攀爬的最大坡度。
    • Step Offset:角色可以跨越的台阶高度。
    • Skin Width:用于碰撞检测的皮肤宽度,以避免角色在与物体接近时出现抖动。
    • Min Move Distance:如果角色的移动距离小于这个值,则不会进行移动,以避免微小的移动导致不必要的计算。
  3. 使用方法:

    • 通过脚本获取 Character Controller 组件,并在 Update 函数中使用 Move 方法来实现角色的移动。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class PlayerMove : MonoBehaviour
{public float speed;private CharacterController controller;// Start is called before the first frame updatevoid Start(){controller = GetComponent<CharacterController>();}// Update is called once per framevoid Update(){Vector3 moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));moveDirection = transform.TransformDirection(moveDirection);controller.Move(moveDirection * speed * Time.deltaTime);}
}

二. 3D刚体

名称  功能
质量定义游戏对象的质量(以千克为单位)。默认情况下,Mass 设置为 1。与现实生活中一样,质量不会影响物品在重力作用下的速度。要模拟减慢运动速度的阻力,请使用 Drag (拖动)。
定义刚体线速度的衰减率,以模拟阻力、空气阻力或摩擦力。较低的值会产生较慢的衰减速率,因此游戏对象的移动速度会更长(这对于模拟繁重的现实世界对象非常有用)。较高的值会产生更快的衰减速率,因此游戏对象会在短时间内减慢速度(这对于模拟轻量级真实世界对象非常有用)。
角度阻力定义刚体旋转速度的衰减率,以模拟阻力、空气阻力或摩擦力。较低的值会产生较慢的衰减速率,因此游戏对象的移动速度会更长(这对于模拟繁重的现实世界对象非常有用)。较高的值会产生更快的衰减速率,因此游戏对象会在短时间内减慢速度(这对于模拟轻量级真实世界对象非常有用)。请注意,不能仅通过将游戏对象的 Angular Drag 设置为无穷大来使游戏对象停止旋转。默认情况下,Angular Drag 设置为 0.05。
自动质心启用 Automatic Center Of Mass (自动质心) 以使用物理系统根据刚体的形状和比例预测的刚体质心。禁用可设置您自己的质心 X、Y 和 Z 坐标。
自动张量启用 Automatic Tensor (自动张量) 以使用物理系统对刚体的预测张量和张量旋转,基于所有连接的碰撞器
.与质量一样,惯性张量定义使刚体移动所需的力或扭矩;但是,质量影响线性运动,而惯性张量影响旋转运动。禁用 可改为张量设置您自己的 X、Y 和 Z 坐标(请参阅下面的属性)。
惯性张量定义此刚体的惯性张量。Inertia Tensor 值越高,使刚体绕其轴旋转所需的扭矩就越大。
惯性张量旋转定义惯性张量的旋转。
使用重力切换 Rigidbody 上的重力效果。如果启用,物理系统将施加一个力,使游戏对象沿模拟重力的方向移动(默认情况下,沿 y 轴向下移动)。默认情况下,Use Gravity 处于启用状态。
是运动学的在游戏对象的基于物理的运动和运动之间切换。启用 Is Kinematic 后,物理系统无法施加力来移动或旋转游戏对象,而 Unity 只能通过其 Transform 移动和旋转游戏对象。有关详细信息,请参阅刚体物理特性简介:没有基于物理的运动的刚体。默认情况下,Is Kinematic 处于禁用状态。
插话刚体上的 Interpolate (插值) 设置提供了两个选项,如果刚体运动在运行时出现抖动,则用于平滑刚体运动的外观。这些选项包括 Interpolate (插值) 和 Extrapolate (外插)。

interpolation (插值) 和 Extrapolation (外插) 都会计算物理更新之间刚体的姿势 (即位置和旋转)。您应该选择哪一个选项取决于哪个选项为您的使用案例产生最佳视觉效果。

有关 Interpolate 属性的详细信息,请参阅将插值应用于刚体。
没有不应用插值或外插。这是默认选项。
插话使用前两次物理更新中刚体的姿势和速度来计算和应用刚体在当前帧中的姿势。

Interpolate 比 Extrapolate 更准确,但它有一个物理更新的时间滞后。这通常最适合准确性很重要的情况;例如,如果刚体的速度发生变化,或者有其他物理元素影响刚体的运动。
外推使用上一次物理更新中刚体的姿态和速度,并预测下一次物理更新中刚体的姿态,以计算和预测当前帧中的姿态。

Extrapolate 使刚体看起来略微领先于其应有的位置,并且可能略微不准确。这通常最适合精度不重要的情况;例如,如果刚体以恒定速度移动,并且没有其他物理元素影响刚体的移动。
碰撞检测定义物理系统如何检测此刚体的碰撞体与场景中的其他碰撞体之间的碰撞。Unity 为每对碰撞体生成一个碰撞,并根据此 Collision Detection 属性确定碰撞检测方法。

默认情况下,Collision Detection (重叠检测) 设置为 Discrete (离散)。有关每种冲突检测类型的更多信息,请参阅连续碰撞检测
.
离散物理系统使用 discrete碰撞
detection 来计算此刚体碰撞器的碰撞。如果此刚体不涉及任何快速移动的碰撞,请选择 Discreation离散 碰撞检测
不是很计算密集。
连续的物理系统使用基于扫描的 CCD 来计算此刚体的碰撞体与任何静态碰撞体(即没有关联刚体的碰撞体)之间的碰撞。如果此刚体涉及与静态碰撞体的快速移动碰撞,请选择 Continuous。基于扫描的 CCD 比 Discrete 或 Continuous Speculative 的计算密集度更高。
连续动态物理系统使用基于扫描的 CCD 来计算此刚体的碰撞体与所有其他碰撞体之间的碰撞,但设置为 Discrete collision detection (离散碰撞检测的碰撞体除外)。如果此刚体涉及与任何碰撞体的快速移动碰撞,请选择 Continuous Dynamic。基于扫描的 CCD 比 Discrete 或 Continuous Speculative 的计算密集度更高。
持续投机物理系统使用推测性连续碰撞检测
来计算此刚体的碰撞体与所有其他碰撞体之间的碰撞。如果碰撞精度对于此刚体不重要,请选择 Continuous Specative。推测性碰撞检测的计算量比 Discrete 高,但比 Continuous 或 Continuous Dynamic 的计算量低。
约束对刚体的移动施加限制。
冻结位置选择性地停止刚体在世界 X、Y 和 Z 轴上移动。
冻结旋转有选择地停止刚体围绕局部 X、Y 和 Z 轴旋转。

在 Unity 中,刚体(Rigidbody)是用于模拟物理效果的重要组件。

A、刚体的基本概念

  1. 定义:刚体是一种物理对象,它在物理模拟中具有一定的质量、形状和运动属性,并且遵循牛顿力学定律。在 Unity 中,刚体组件可以添加到游戏对象上,使其能够受到重力、碰撞和其他物理力的影响。
  2. 作用:刚体组件使得游戏对象能够在物理世界中进行真实的运动和交互。它可以模拟物体的运动、碰撞、反弹等物理现象,为游戏增加真实感和趣味性。

B、刚体的主要属性

  1. Mass(质量):
    • 定义了刚体的质量大小。质量越大,物体受到的重力和惯性就越大。
    • 质量的单位是千克(kg)。可以根据实际需求调整物体的质量,以实现不同的物理效果。
  2. Drag(阻力):
    • 决定了刚体在运动过程中受到的空气阻力大小。阻力越大,物体运动的速度就会越快地减慢。
    • 阻力的单位是牛顿秒每米(N・s/m)。可以根据物体的运动速度和环境来调整阻力值,以模拟不同的运动情况。
  3. Angular Drag(角阻力):
    • 控制刚体旋转时受到的阻力大小。角阻力越大,物体旋转的速度就会越快地减慢。
    • 角阻力的单位也是牛顿秒每米(N・s/m)。可以根据物体的旋转速度和需求来调整角阻力值。
  4. Use Gravity(使用重力):
    • 一个布尔值选项,决定刚体是否受到重力的影响。如果勾选该选项,刚体将受到 Unity 中预设的重力作用。
    • 默认情况下,Use Gravity 选项是勾选的,这意味着大多数物体都会受到重力影响而向下掉落。
  5. Is Kinematic(是否为运动学刚体):
    • 一个布尔值选项,用于将刚体设置为运动学刚体或普通刚体。
    • 如果勾选 Is Kinematic 选项,刚体将不受物理引擎的影响,而是通过脚本或动画来控制其运动。运动学刚体通常用于与其他刚体进行碰撞检测,但不参与物理模拟。
    • 如果不勾选 Is Kinematic 选项,刚体将受到物理引擎的控制,遵循牛顿力学定律进行运动。

C、刚体的常见方法

  1. AddForce(施加力):
    • 用于向刚体施加一个力,使其产生加速度并开始运动。
    • 可以通过指定力的大小和方向来控制刚体的运动。例如,可以使用 AddForce (Vector3.forward * 10) 向刚体施加一个向前的力,使其向前加速运动。
  2. AddTorque(施加扭矩):
    • 向刚体施加一个扭矩,使其产生旋转加速度并开始旋转。
    • 可以通过指定扭矩的大小和方向来控制刚体的旋转。例如,可以使用 AddTorque (Vector3.up * 10) 向刚体施加一个向上的扭矩,使其绕 y 轴旋转。
  3. Sleep(使刚体休眠):
    • 当刚体处于静止状态时,可以使用 Sleep 方法将其设置为休眠状态,以减少物理计算的开销。
    • 休眠的刚体将不会参与物理模拟,直到受到外力作用或被唤醒。可以使用 WakeUp 方法唤醒休眠的刚体。
  4. IsSleeping(判断刚体是否处于休眠状态):
    • 返回一个布尔值,表示刚体是否处于休眠状态。
    • 可以在脚本中使用这个方法来检查刚体的状态,并根据需要进行相应的处理。

D、刚体的碰撞检测

  1. Collider(碰撞器):
    • 刚体通常需要与碰撞器组件一起使用,才能实现碰撞检测。碰撞器定义了物体的形状和大小,用于检测物体之间的碰撞。
    • Unity 提供了多种类型的碰撞器,如 Box Collider(盒子碰撞器)、Sphere Collider(球体碰撞器)、Capsule Collider(胶囊碰撞器)等。可以根据物体的形状选择合适的碰撞器类型。
  2. OnCollisionEnter(碰撞开始事件):
    • 当刚体与其他物体发生碰撞时,会触发 OnCollisionEnter 事件。可以在脚本中重写这个方法来处理碰撞事件。
    • 例如,可以在 OnCollisionEnter 方法中播放碰撞音效、减少物体的生命值等。
  3. OnTriggerEnter(触发开始事件):
    • 当刚体进入一个触发器区域时,会触发 OnTriggerEnter 事件。触发器是一种特殊的碰撞器,它不会产生物理碰撞效果,而是用于检测物体的进入和离开。
    • 可以在脚本中重写 OnTriggerEnter 方法来处理触发事件。例如,可以在触发器区域中触发剧情、打开门等。

E、刚体的应用场景

  1. 游戏角色控制:
    • 可以使用刚体来模拟游戏角色的运动和碰撞。通过施加力和扭矩,可以控制角色的移动、跳跃和攻击等动作。
    • 结合动画和物理效果,可以使角色的动作更加真实和自然。
  2. 物体交互:
    • 刚体可以用于模拟物体之间的交互,如推箱子、碰撞球等游戏。通过检测碰撞和施加力,可以实现物体的移动、碰撞和反弹等效果。
  3. 物理模拟:
    • 在一些模拟类游戏中,刚体可以用于模拟真实的物理现象,如重力、摩擦力、弹性等。通过调整刚体的属性和碰撞器,可以实现不同的物理效果。

三.扩展

Constant Force 将恒定力添加到刚体这适用于游戏对象随时间加速的运动。

名称:功能:
定义线性力的方向。XYZ 向量引用现场
的全局轴。
相对力定义线性力的方向。XYZ 矢量是指刚体的局部轴。
力矩定义刚体旋转的全局轴。
相对扭矩

定义刚体旋转的局部轴。

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

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

相关文章

《CounTR: Transformer-based Generalised Visual Counting》CVPR2023

摘要 本论文考虑了通用视觉对象计数问题&#xff0c;目标是开发一个计算模型&#xff0c;用于计算任意语义类别的对象数量&#xff0c;使用任意数量的“样本”&#xff08;即可能为零样本或少样本计数&#xff09;。作者提出了一个新颖的基于Transformer的架构&#xff0c;称为…

shell 学习笔记:变量、字符串、注释

目录 1. 变量 1.1 定义使用变量 1.2 变量命名规则 1.3 只读变量 1.4 删除变量 1.5 变量类型 1.5.1 字符串变量 1.5.2 整数变量 1.5.3 数组变量 1.5.3.1 整数索引数组 1.5.3.2 关联数组 1.4 环境变量 1.5 特殊变量 2. 字符串 2.1 单引号字符串 2.2 双引…

【32项目】基于stm32f103c8t6WIFI远程监控智慧农业大棚(含完整代码)

目录 前言 设计背景 设计原理 所需材料 JW01二氧化碳传感器介绍 YL-69土壤湿度传感器介绍 PCB及原理图 部分代码&#xff08;完整代码见文章末尾&#xff09; 前言 随着农业现代化的发展&#xff0c;智慧农业的概念越来越受到重视。智慧农业利用物联网、大数据、人工智…

计算机网络 数据链路层2

ALOHA:想发就发 CSMA 载波监听多路访问协议 CS&#xff1a;载波监听&#xff0c;在发送数据之前检测总线上是否有其他计算机在发送数据 1-坚持CSMA:主机想发送消息&#xff0c;需要监听信道&#xff1b; 信道空闲则直接传输信息&#xff1b; 信道忙碌则一直监听&#xff0c;直…

【JavaWeb】JDBCDruidTomcat入门使用

本章使用技术版本&#xff1a; Tomcatv10.1.25 关于javaweb相关的其他技术&#xff0c;比如tomcat和maven&#xff0c;在我的主页记录了笔记&#xff0c;ajax我用的是本地笔记以后再考虑上传&#xff0c;前端三板斧我用的菜鸟教程文档 JDBC 初识 JDBC概念 JDBC 就是使用Jav…

【深度学习 transformer】使用pytorch 训练transformer 模型,hugginface 来啦

Hugging Face是一个致力于开源自然语言处理&#xff08;NLP&#xff09;和机器学习项目的社区。它由几个关键组件组成&#xff1a; Transformers&#xff1a;这是一个基于PyTorch的库&#xff0c;提供了各种预训练的NLP模型&#xff0c;如BERT、GPT、RoBERTa、DistilBERT等。它…

SEO之网站结构优化(十四-内部链接及权重分配3)

初创企业搭建网站的朋友看1号文章&#xff1b;想学习云计算&#xff0c;怎么入门看2号文章谢谢支持&#xff1a; 1、我给不会敲代码又想搭建网站的人建议 2、“新手上云”能够为你开启探索云世界的第一步 博客&#xff1a;阿幸SEO~探索搜索排名之道 7、锚文字分布及变化 前面…

WebGIS与WebGL是什么,两者之间的关系?

WebGL和 WebGlS 都是 web 技术领域的重要内容&#xff0c;特别是这几年webgis开发领域&#xff0c;和webgl打交道是必然的&#xff0c;常见的WebGL开发的基础上&#xff0c;比如二维的Leaflet、三维的Cesium也都是热门。 WebGL是一种基于 HTML5 Canvas 元素的 JavaScriptAPI&a…

RLHF(带有人类反馈的强化学习)初探

我的目标是&#xff0c;在决策游戏上学习某人风格&#xff0c;可以让人对战“带有某人风格”的AI&#xff0c;比如你可以在这里对战“sky风格的AI”,这样的效果。 我最开始受到的启发来源于xbox的广告《爸爸的幽灵车》&#xff0c;已故人在游戏中留下的速度记录的固定轨迹。 …

IOS17.0安装巨魔:TrollRestore巨魔发布

&#x1f47b; TrollRestore 17.0 巨魔发布 15.0 - 16.7 RC&#xff08;20H18&#xff09;和17.0。 官网&#xff1a;https://trollrestore.com/ 下载&#xff1a;https://pan.metanetdisk.com/IOS/%E5%B7%A8%E9%AD%94%E7%8E%A9%E5%AE%B6/TrollRestore.com 使用&#xff1a;ht…

【数字人】Facevid2vid:用于视频会议的一次性自由视图说话头合成

论文&#xff1a;https://arxiv.org/pdf/2011.15126 github:GitHub - zhanglonghao1992/One-Shot_Free-View_Neural_Talking_Head_Synthesis: Pytorch implementation of paper "One-Shot Free-View Neural Talking-Head Synthesis for Video Conferencing" 一种新颖…

缓存分布式一致性问题

缓存一致性问题发生的原因&#xff0c;是在更新数据时数据库和缓存数据的不一致。我们要做到保证缓存的最终一致性。如果数据需要强一致性建议直接查询数据库。 双写模式 双写模式为先写数据库&#xff0c;在写缓存。 进来两个请求&#xff0c;先执行“请求1”的操作写入数据…

装WebVideoCreator记录

背景&#xff0c;需要在docker容器内配置WebVideoCreator环境&#xff0c;配置npm、node.js https://github.com/Vinlic/WebVideoCreatorWebVideoCreator地址&#xff1a;https://github.com/Vinlic/WebVideoCreator 配置环境&#xff0c;使用这个教程&#xff1a; linux下安…

Spring Boot-自定义banner

在 Spring Boot 应用中&#xff0c;你可以自定义启动时显示的 banner。这些 banner 可以包括图形、文字或者其他形式的标识。如图所示&#xff1a; 1. 使用 banner.txt 文件 默认情况下&#xff0c;Spring Boot 使用项目的 banner.txt 文件中的内容作为启动时的 banner。你可以…

文献阅读:对区域间皮层投射神经元命运多样性的时间控制

文献介绍 文献题目&#xff1a; 对区域间皮层投射神经元命运多样性的时间控制 研究团队&#xff1a; Denis Jabaudon&#xff08;瑞士日内瓦大学&#xff09; 发表时间&#xff1a; 2021-11-09 发表期刊&#xff1a; Nature 影响因子&#xff1a; 49.9&#xff08;2021年&am…

关于电力系统的几个疑问

非电力专业人员对于电力中的某些知识不能够形成系统的认识&#xff0c;接下有空也有补充下这方面知识&#xff0c;吹水时候才有水可以吹&#xff0c;嘻嘻&#xff01;这里舍不得删掉下边chatgpt这几张图片&#xff0c;暂时先保留着。因为一直有个因为在电网里边用发电端和用电端…

EmguCV学习笔记 C# 9.3 移动检测类

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

爬取图片保存为pdf

本文章想借着爬虫给大家介绍一下图片转pdf,有需要的友友们可以看看参考参考&#xff0c;有帮助到友友的可以收藏&#xff0b;关注。下面以爬取初中7年级数学上册为例给大家演示一下。网址是这个 https://mp.weixin.qq.com/s?__bizMzAxOTE4NjI1Mw&mid2650214000&idx…

智慧医院是什么?建设智慧医院的关键步骤

智慧医院是什么&#xff1f; 智慧医院是一种新型的医疗机构&#xff0c;它利用先进的信息技术、数据分析和智能化系统&#xff0c;优化医院的管理和服务流程&#xff0c;提高医疗质量和效率。在智慧医院中&#xff0c;所有的运营和管理环节都可以通过数据驱动的方式来实现优化…

Trollspeed网速悬浮窗,精简且强大

我很喜欢iOS的界面UI&#xff0c;它的设计哲学是以人为本&#xff0c;简约而不简单。不过有时候&#xff0c;我也会觉得iOS简约过头了。人类是很没安全感的动物&#xff0c;获取的信息量足够多&#xff0c;我们才会感觉到安全。 在iOS16中&#xff0c;苹果加入了电量百分比显示…