物理系统(一)

article/2025/10/16 22:13:27

物理系统主要由以下几部分组成:Rigidbody(刚体)、Character Controller(角色控制器)、Collider(碰撞器)、Cloth(布料)、Joint(关节)

如图:

一、Rigibdody

● Mass: 质量

● Drag: 阻力(空气阻力)

● Angular Drag: 旋转阻力

● Use Gravity: 使用重力

● Is Kinematic: 是否运动学(若激活则物体不受物理引擎的作用)

● Interpolate: 插值(当刚体运动抖动时可使用)

  ▶ None: 没有

  ▶ Interpolate: 内插值(基于上一帧的变换来平滑本帧的变换)

  ▶ Extrapolate:  外插值(基于下一帧的预估)

● Collision Detection: 碰撞检测

  ▶ Discrete: 不连续

  ▶ Continuous: 连续

  ▶ Continuous Dynamic: 动态连续

● Constraints: 约束

 二、Collider

● Is Trigger: 启用触发器

● Material: 物理材质

● Center: 中心(碰撞器与游戏对象中心的相对位置)

● Size : 大小

●  Dynamaic Friction: 动态摩擦力。物体滑动时的摩擦力,通常为0到1之间。

● Static Friction: 静态摩擦力。

● Bounciness: 弹力。0时不反弹,1时的反弹不损耗能量

● Friction Combine: 摩擦力的组合方式。定义两个碰撞体的摩擦力如何相互作用

● Bounce Combine: 反弹组合

  ▶Average: 平均。使用两个摩擦力的均值

  ▶Minimum: 取最小值

  ▶Multiply: 相乘。两个摩擦力的乘积

  ▶Maximum: 取最大值

● Radius: 半径

● Height: 高度

● Direction: 方向

  网格碰撞器和其他有一些区别。首先网格碰撞器可以和其他碰撞器碰撞,但是两个网格碰撞器之间不会发生碰撞,要想产生碰撞需要勾选 Convex 。(网格碰撞器会占用更多的系统资源)

● Inflate Mesh: 网格膨胀

  Wheel Collider:车轮碰撞器,专门针对陆上交通工具而设计。

● Wheel Damping Rate: 车轮减震率

● Suspension Distance: 最大车轮悬挂伸缩距离,以自身坐标计算。悬挂总是通过自身Y轴伸展向下。

● Force App Point Distance:

● Suspension Spring: 悬挂弹簧

  ▶Spring: 弹力。该值越大可使悬挂越快达到目标位置

  ▶Damper: 阻尼

  ▶ Target Position: 目标位置

● Forward Friction: 车轮指向的摩擦力(向前)

  ▶Extremum Slip: 滑动极值

  ▶Extremum Value: 极限值

  ▶Asymptote Slip: 滑动渐进值

  ▶Asymptote Value: 渐进值

  ▶Stiffness: 刚性因子

● Sideways Friction: 车轮侧面摩擦力

  ▶Extremum Slip: 滑动极值

  ▶Extremum Value: 极限值

  ▶Asymptote Slip: 滑动渐进值

  ▶Asymptote Value: 渐进值

  ▶Stiffness: 刚性因子

●  Material: 物理材质

● Terrain Data: 地形

● Enable Tree Colliders: 

三、Character Controller

  角色控制器和刚体不能同时使用。如果你的角色需要受到重力,你就需要在脚本中模拟重力;如果你希望你的角色受到物理效果的影响,你最好使用刚体而不是角色控制器。

  在Unity物理引擎中有两种检测碰撞的方法,一种是刚体+碰撞器跟其他的碰撞器碰撞;另一种是 Character Controller与其他的碰撞器碰撞。

  两种方法的主要区别是 Character Controller 的方法与其他的物体碰撞后并不会对他们产生任何力的作用(这种方法一般用于摄像机浏览场景时,需要控制摄像机不穿透场景中的物体时使用),而刚体+碰撞器的方法则会对游戏场景中的物体产生力的作用

● Slope Limit: 爬坡限制

● Step Offset: 台阶高度

● Skin Width: 皮肤厚度,即两个碰撞器可以相互渗入的厚度(较大的值会导致颤抖,较小的值会导致角色卡住,一般设为 Radius 的10%)

● Min Move Distance:最小移动距离(如果小于该值则角色不会移动)

★ 角色控制器有专门的碰撞检测方法 OnControllerColliderHit。
★角色控制器不能将钢体推开,如果要做这件事可以使用 OnControllerColliderHit。
★在使用 Move 方法移动时,collisionFlags 属性能指明是哪个部分发生了碰撞

    /// <summary>/// 这个方法调用角色控制器,控制角色移动并模拟重力/// </summary>float speed = 6f;float jumpSpeed = 8f;float gravity = 20f;private Vector3 moveDirection = Vector3.zero;void Update(){CharacterController controller = GetComponent<CharacterController>();//如果角色控制器接触地面//通过轴重新计算 moveDirectionif (controller.isGrounded){moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));moveDirection = transform.TransformDirection(moveDirection);moveDirection *= speed;//跳跃if (Input.GetButton("Jump")){moveDirection.y = jumpSpeed;}}//模拟重力moveDirection.y -= gravity * Time.deltaTime;//移动控制,调用Move方法
     //Move:方法通过一个增量参数控制角色移动 SimpleMove:方法通过一个速度参数控制角色移动。
controller.Move(moveDirection * Time.deltaTime);}/// <summary>/// 这个方法用来推开角色控制器碰到的所有刚体/// </summary>public float pushPower = 2.0F;void OnControllerColliderHit(ControllerColliderHit hit){Rigidbody body = hit.collider.attachedRigidbody;//没有刚体,返回0if (body == null || body.isKinematic)return;//我们不想推动在我们下边的物体。moveDirection(当碰撞发生时,角色控制器的方向)if (hit.moveDirection.y < -0.3F)return;//根据移动方向计算推的方向//我们只把物体推向一旁,而不是往上或往下Vector3 pushDir = new Vector3(hit.moveDirection.x, 0, hit.moveDirection.z);//速度=推动方向*推动速度body.velocity = pushDir * pushPower;}

 

四、Cloth

Cloth组件专门为人物服装设计,同时配合 Skinned Mesh Renderer 使用

● Cast Shadows: 投射阴影

● Receive Shadows: 接受阴影

● Motion Vectors: 运动矢量

● Materials: 材质列表

  ▶Size: “Material”的数量

  ▶Element 0:

● Light Probes: 光探头

  ▶Blend Probes: 混合探头

  ▶Use Proxy Volume:

● Reflection Probes: 反射探头

  ▶Blend Probes: 混合探头

  ▶Blend Probes And Skybox:

  ▶Simple:

● Anchor Override: 锚定覆盖

● Lightmap Parameters:

● Quality: 质量。影响单个点的最大骨骼数量

● Update When Offscreen: 画面外更新

● Skinned Motion Vectors: 蒙皮运动矢量

● Mesh: 用于蒙皮的网格

● Root Bone: 根节点

● Bounds: 渲染器的边界框

  ▶Center:

  ▶Extents:

● Stretching Stiffnes: 拉伸刚度。用于设置布料的抗拉伸程度,0-1之间,数值越大越不容易拉伸。

● Bending Stiffness: 弯曲刚度。用于设置布料的抗弯曲程度,0-1之间,数值越大越不容易拉伸。

● Use Tethers: 应用约束。

● Use Gravity: 使用重力

● Damping: 阻尼

● External Acceleration: 外部加速度

● Random Acceleration: 随机加速度

● World Velocity Scale: 定义角色在世界空间移动对布料顶点的影响(基于空气阻力)

● World Acceleration Scale: 角色加速度对布料顶点的影响

● Friction: 布料摩擦

● Collision Mass Scale: 碰撞质量

● Use Continuous Collision: 使用连续碰撞

● Use Virtual Paticles: 使用虚拟粒子。每个三角形添加一个虚拟粒子提供碰撞稳定性

● Solver Frequency: 每秒解算器迭代次数

● Sleep Threshold : 睡眠阙值

● Capsule Colliders:

● Sphere Colliders:

五、Joint(关节)

● Connected Body: 连接体,为刚体指定的关节连接物,如不设定,则与世界相连

● Anchor: 锚点,用于定义关节中心,也就是物件将被拖去的点。

● Axis: 坐标轴,摇摆方向的坐标,基于本地坐标系

● Auto Configure Connected Anchor:

● Connected Anchor: 

● Use Spting: 是否使用弹簧

● Spring: 弹簧

  ▶Spring: 弹簧力

  ▶Damper: 阻尼

  ▶Target Position: 弹簧的目标角度。弹簧拉向这个角度

● Use Motor: 是否使用马达

● Motor: 马达

  ▶Target Velocity: 目标速率

  ▶Force: 力

  ▶Free Spin: 自由转动

● Use Limits: 是否有限制

● Limis: 限制

  ▶Min: 最小。能达到的最小角度

  ▶Max: 最大

  ▶Bounciness: 最小弹跳

  ▶Bounce Min Velocity: 最大弹跳

  ▶Contact Distance: 接触距离

● Break Force: 破坏力。破坏关节的力的大小。(Infinity:默认无穷大)

● Break Torque: 破坏扭矩。破坏关节的扭力的大小

● Enable Collision:

● Enable Preprocessing:

● Fixed Joint: 固定关节。当你想要两个没有父子关系的物体一起运动,可是又希望他能受力而分开时使用

● Break Force: 破坏力。破坏关节的力的大小

● Break Torque: 破坏扭矩。破坏关节的扭力的大小

● Spring Joint: 弹簧

● Min Distance/Max Distance:弹簧在这两个之间是正常状态,不激活弹簧或者说不受力。(一般为0)

 

转载于:https://www.cnblogs.com/yx-xiansheng/p/6754735.html


http://chatgpt.dhexx.cn/article/rrsgUdkZ.shtml

相关文章

计算机信息系统

一、概念 &#xff08;1&#xff09; 计算机信息系统&#xff08; Computer_based Information System &#xff0c;简称信息系统&#xff09;是一类以提供信息服务 为主要目的的数据密集型、人机交互的计算机应用系统。 &#xff08;2&#xff09;由计算机及其相关的和配套的…

物理服务器的信息,信息物理系统

信息物理系统(CPS,Cyber-Physical Systems)是一个综合计算、网络和物理环境的多维复杂系统&#xff0c;通过3C(Computation、Communication、Control)技术的有机融合与深度协作&#xff0c;实现大型工程系统的实时感知、动态控制和信息服务。CPS实现计算、通信与物理系统的一体…

小白聊智慧制造:一文读懂信息物理系统(CPS)

随着我国“中国制造2025”的不断深入&#xff0c;越来越多的制造业企业在探索中国的制造业升级。制造业的智能升级有美国的工业互联网和德国的工业4.0两种方式&#xff0c;根据我国制造业所处的阶段&#xff0c;大多数企业选择德国工业4.0的方案。工业4.0的方案之中&#xff0c…

软考 - 05 信息物理系统(Cyber Physical Systems, CPS)

文章目录 题目【问题1】【答案1】【问题2】【答案2】【问题3】【答案3】 题目 信息物理系统&#xff08;Cyber Physical Systems, CPS)技术己成为未来宇航装备发展的重点关键技术之一。某公司长期从事嵌入式系统的研制工作&#xff0c;随着公司业务范围不断扩展&#xff0c;公…

LFU 的设计与实现

LFU 的设计与实现 作者&#xff1a;Grey 原文地址&#xff1a; 博客园&#xff1a;LFU 的设计与实现 CSDN&#xff1a;LFU 的设计与实现 题目描述 LFU&#xff08;least frequently used&#xff09;。即最不经常使用页置换算法。 题目链接&#xff1a;LeetCode 460. LF…

Redis的LRU和LFU浅谈

1.概论 Redis中的缓存淘汰算法大体分为两种&#xff0c;volatile-xxx和allkeys-xxx。volatile-xxx 是对带过期时间的 key 进行淘汰&#xff0c;即使用了expire的key&#xff1b;allkeys-xxx 策略会对所有的key 进行淘汰。如果只是用redis做缓存&#xff0c;几乎不使用持久…

LFU五种实现方式,从简单到复杂

前言 最近刷力扣题&#xff0c;对于我这种 0 基础来说&#xff0c;真的是脑壳疼啊。这个月我估计都是中等和困难题&#xff0c;没有简单题了。 幸好&#xff0c;力扣上有各种大牛给写题解。看着他们行云流水的代码&#xff0c;真的是羡慕不已。让我印象最深刻的就是人称 “甜…

LRU和LFU

LRU 根据题意&#xff0c;使用过的数据放在链表的尾部&#xff0c;容量满了就删除链表的头&#xff0c;使用的数据结构是LinkedHashMap。 146. LRU 缓存(中等) class LRUCache {private int cap;private LinkedHashMap<Integer, Integer> list;public LRUCache(int…

LFU缓存详解

LFU缓存详解 文章目录 LFU缓存详解一、LFU概念二、分析方法一&#xff1a;哈希表 平衡二叉树方法二&#xff1a;双哈希表 一、LFU概念 LRU详解&#xff1a;https://blog.csdn.net/wolfGuiDao/article/details/105862106 LRU 算法相当于把数据按照时间排序&#xff0c;这个需求…

LRU和LFU算法

LRU淘汰算法 LRU&#xff1a;Least Recently Used&#xff0c;最近最少使用。即淘汰掉最近最少使用的数据。 以时间轴作为走向&#xff1a; 如果数据A刚被访问&#xff0c;那么A就应该调至头部&#xff1a; 假如内存容量已满&#xff0c;现在新数据E被插入&#xff0c;需要淘…

FIFO、LRU、LFU的含义和原理

FIFO&#xff1a;First In First Out&#xff0c;先进先出LRU&#xff1a;Least Recently Used&#xff0c;最近最少使用 LFU&#xff1a;Least Frequently Used&#xff0c;最不经常使用 以上三者都是缓存过期策略。 原理和实现&#xff1a; 一、FIFO按照“先进先出&#…

LFU算法

LFU&#xff08;LeastFrequently Used&#xff09;&#xff0c;即最近最多使用算法。它是基于“如果一个数据在最近一段时间内使用次数很少&#xff0c;那么在将来一段时间内被使用的可能性也很小”的思路。LFU算法需要维护一个队列记录所有数据的访问记录&#xff0c;每个数据…

Redis精通系列——LFU算法详述(Least Frequently Used - 最不经常使用)

本文已收录于专栏 ❤️《Redis精通系列》❤️ 上千人点赞收藏&#xff0c;全套Redis学习资料&#xff0c;大厂必备技能&#xff01; 目录 1、简介 2、实现方式 2.1 LRU实现方式 2.2 LFU实现方式 3、LFU使用 3.1 配置文件开启LFU淘汰算法 1、简介 LRU有一个明显的缺点&…

什么是LRU?什么是LFU

缓存算法是指令的一个明细表&#xff0c;用于决定缓存系统中哪些数据应该被删去。 常见类型包括LFU、LRU、ARC、FIFO、MRU。 最不经常使用算法&#xff08;LFU&#xff09;&#xff1a; 这个缓存算法使用一个计数器来记录条目被访问的频率。通过使用LFU缓存算法&#xff0c;…

LRU算法和LFU算法

文章目录 1、LRU算法2、LFU算法 1、LRU算法 LRU是Least Recently Used的缩写&#xff0c;即最近最少使用&#xff0c;是一种常用的页面置换算法&#xff0c;选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段&#xff0c;用来记录一个页面自上次被访问以来所…

LRU算法与LFU算法

LRU算法 LRU是Least Recently Used的缩写&#xff0c;即最近最少使用算法&#xff0c;是操作系统中页面置换算法的一种&#xff0c;由于内存中存放的页数有限&#xff0c;所以将最近没有使用到的算法会移出内存。 LRU原理&#xff1a; LRU原理如下图所示&#xff1a; 它会将最…

【算法】LFU及其优化

文章目录 什么是LFU&#xff1f;设计思路代码实现&#xff08;基础版本&#xff09;参考论文代码实现&#xff08;优化版本&#xff09;区别 什么是LFU&#xff1f; LRU及其实现 上文讲解了LRU&#xff0c;他是一个基于最近是否被访问来做缓存淘汰的策略。 那么今天介绍一个新…

LRU和LFU算法解析

文章目录 LRU和LFU算法解析LRULRU概念LRU算法实现LRU算法描述LRU算法图示LRU C代码代码测试 LFULFU概念LFU算法实现LFU算法描述LFU算法图示LFU C代码代码测试 总结 LRU和LFU算法解析 LRU LRU概念 LRU&#xff08;The Least Recently Used&#xff0c;最近最少未使用&#xf…

LRU和LFU的区别

对于web开发而言&#xff0c;缓存必不可少&#xff0c;也是提高性能最常用的方式。无论是浏览器缓存(如果是chrome浏览器&#xff0c;可以通过chrome:://cache查看)&#xff0c;还是服务端的缓存(通过memcached或者redis等内存数据库)。缓存不仅可以加速用户的访问&#xff0c;…

LFU算法族:LFU算法

LFU算法族相关文章目录汇总&#xff1a; LFU算法&#xff08;本文&#xff09;​​​​​​​ LFU-Aging算法 window-LFU算法 1、原理 LFU&#xff08;Least Frequently Used&#xff09;算法&#xff0c;即最少访问算法&#xff0c;根据访问缓存的历史频率来淘汰数据&…