网格物理程序员指南

一般技巧

可以从扫描 Unity 物理文档开始。有很多资源可用于优化 Unity 中的物理。

网格物理具有一些额外的挑战。 下面是一些帮助克服这些技巧的提示。

  • 制造厚墙: 网络同步可能会稍微移动刚性体。 因此,你将在对象之间看到一些额外的渗透。 小型动态身体可能会被推过薄墙。 对于更厚的对象和墙壁,这些隧道效果不太可能。 如果可能,请使用凸体或一小组凸体进行动态体。

  • 尽可能使用厚凸块进行静态几何图形。 尝试避免网格,尤其是高度密集的网格。

  • 实实在在的群众:来自各种来源的内容可能在同一场景中进行交互。 如果对象之间的质量比合理,则这一点很有效。 一个很好的起点是用公斤把现实群众分配给身体。

开发增强的网格物理内容

自动播放动画

可以将自动播放动画添加到与物理体交互的场景中。 这些动画通过暂时调整客户端的播放速度(降低播放速度或加快播放速度),在每个客户端上自动同步,直到所有客户端同时处于相同的动画状态。

设置

  • 自动 播放。
  • 如果动画影响与物理体交互的碰撞体,建议对物理 物理进行动画处理(但不需要)。
  • 剔除类型 设置为“始终动画”(网格物理自动强制实施),因为动画可能会影响物理体,即使它们处于屏幕外也是如此。

检查器中动画组件设置的屏幕截图。

自动播放动画使用的动画剪辑可以使用任何 换行模式。 有用的选择是“循环”和“乒乓球”。

检查器中动画剪辑资产设置的屏幕截图。

组件

将以下 MonoBehaviour 组件之一添加到对象会将特定行为添加到此对象。

粘滞体

使身体粘在其他身体上。 它可以用来向其他尸体投掷达特,或在墙上附加图片。 这是通过创建涉及的两个主体之间的固定约束来实现的。 注意: 此操作在所有客户端上执行,因此作为特殊网络消息实现。

检查器中粘滞正文脚本选项的屏幕截图。

设置

  • 摇杆: 定义正文是否会粘附于动态或/和静态主体。
  • 时间: 有时你想粘一个快速的身体,当它只是触摸另一个身体,有时你想粘在一个身体时,当它与另一个身体按住一个给定的时间,如等待粘胶硬化时,你粘在墙上的按钮。
  • 碰撞控制 :禁用一个正文和另一个正文之间的特定冲突。 通常,可以使用碰撞层。 但是,由于Microsoft网格中只有 32 个硬编码冲突层,因此这不是一个选项。 可在此处禁用特定正文。
  • 适用于碰撞体筛选器的受影响的身体筛选器应用于碰撞控制

包含字段

确保刚性体保留在一个或多个触发器碰撞器的边界内。

检查器中包含字段脚本选项的屏幕截图。

若要使此组件正常工作,它需要附加到一个或多个触发器碰撞体。 (这些触发器对撞机也可以嵌套在附加此组件的转换层次结构中 GameObject

当场景启动时,受此组件影响的刚性主体必须已位于其触发器碰撞体(“触发器卷”)的边界内。 然后,每个刚性体的质量中心将受到限制,以保持在触发卷的边界内 - 不可能拉取或否则移动这些刚性体的质量中心在外面的任何位置。

设置:

  • 最大偏差与包含 量允许受影响的刚性体的质量中心稍微超出触发器卷外,然后它重新对齐。 这是性能优化权衡:如果允许的最大偏差较大,正文可能会明显离开触发器卷并回退,但代码可以避免在触发器卷内休息或缓慢移动时经常检查和验证正文的位置。

  • 受影响的正文 定义 受此组件影响的正文的可选筛选条件 。 (默认情况下,所有身体都受到影响。

速度向量字段

允许加速/减速刚性体,直到达到特定的目标速度。

检查器中方向速度字段脚本选项的屏幕截图。

此组件控制速度的大小和方向。 请参阅 “速度数量级字段 ”以仅控制数量级和 速度方向字段 以仅控制方向。 有两种操作模式:

  • 如果附加到一个僵硬的人,这种刚性的人将被控制。
  • 如果附加到触发器碰撞体,则进入此触发器卷的所有刚性体都将受到影响。

设置:

  • 速度类型 定义是处理线性还是角速度。
  • 本地空间 中的方向定义是否在组件附加到的对象的本地空间中指定目标速度。
  • 目标速度 以米/秒(或弧度/秒为单位)设置所需的速度向量,以防角速度)。
  • 最大加速 定义应用于达到目标速度的最大加速。
  • 加速类型 定义达到目标速度的加速类型。
    • 瞬间将立即达到目标速度(与最大加速 = 无穷大相同的常量加速)。
    • 恒定加速将确保正文达到目标速度,无论在最大加速设置的限制范围内。
    • 平滑方法 可减少接近目标速度的加速。 这意味着,在实践中,你永远不会达到目标速度。 此外,如果有任何外部影响,如上坡或下坡,这种额外的影响不会完全被覆盖,导致下降的速度比上坡更快。
  • 受影响的正文 定义 受此组件影响的正文的可选筛选条件 。 (默认情况下,所有身体都受到影响。

缩放重力场

改变重力如何影响一个或多个触发器碰撞体边界内的刚性体。

检查器中反重力字段脚本选项的屏幕截图。

若要使此组件正常工作,它需要附加到一个或多个触发器碰撞体。 (这些触发器对撞机也可以嵌套在附加此组件的 GameObject 下面的转换层次结构中。

任何触摸或重叠触发器碰撞体(“触发器音量”)的任何刚性体都根据此组件的重力设置而不是全球物理重力进行行为。 使用 重力 禁用的刚性身体将被忽略。

在对玩家自己大小的看法和重力之间有一种有趣的关系:

  • 如果重力 小于 我们习惯的(物体下降时速度较慢),玩家就会认为自己更大,就像一个巨大的物体一样。
  • 如果重力大于我们习惯的(物体在坠落时更快),玩家就会认为自己更小,就像老鼠一样。

设置:

  • 重力预设允许为重力刻度属性选择几个有趣且有用的预设:各种天体(月球、火星、地球、木星)、无重力(外太空)或倒置重力(向上倒置)。 始终可以使用喜欢的任何值覆盖 重力刻度
  • 重力刻度 设置触发器卷内的局部重力,相对于影响场景的默认物理重力。 默认重力刻度为 1 使重力不受影响;较大的值会增加重力;0 移除重力;负值切换重力方向。
  • 受影响的正文 定义 受此组件影响的正文的可选筛选条件 。 (默认情况下,所有身体都受到影响。

轨道重力场

模拟场景中“玩具星球”的重力。

检查器中重力场脚本选项的屏幕截图。

若要使此组件正常工作,它需要附加到一个或多个触发器碰撞体。 (这些触发器对撞机也可以嵌套在附加此组件的 GameObject 下面的转换层次结构中。

触摸或重叠触发器碰撞体(“触发器卷”)的任何刚性体将拉取到附加此组件的对象的位置。

设置:

  • 重力 定义重力的大小。 这是轨道体(“月球”)以一米距离向中心体加速。 由于轨道速度为 sqrt(重力/半径),此值描述在一米半径稳定的轨道中月球的速度。

  • 禁用全局重力 会禁用受此组件影响的身体的场景全球物理重力设置。 默认情况下,全球场景重力仍将影响你的行星及其月球。

  • 受影响的人体 定义 可成为此重力场中的月球的人体的可选筛选条件

  • 在圆形轨道 上强制月球是一种作弊,它应用一些温和的力量将月球推入圆形轨道。 动机是,非专家很难以达到循环轨道的方式设置尸体的重力和初始速度。 此外,如果启用此选项,则 Unity 编辑器中放置在重力场中的任何月球都会在加载场景时自动启动绕其中心体轨道。

  • 强制轨道 的强度可缩放应用于迫使月球进入圆形轨道的加速。

  • 设置强制半径放置 使位于 Unity 编辑器重力场内的月球自动采用与中心体的初始距离作为其首选轨道。

  • 设置强制半径,丢弃 使月球以交互方式抓取并移动到重力场自动采用与中心体之间的距离,从中体下降作为他们的首选轨道。

  • 默认强制半径 为上述作弊定义默认半径,除非由任何其他选项重写。

浮能字段

模拟水中任意刚性主体的浮标:身体似乎漂浮在连接的触发器卷上。

检查器中浮能字段脚本选项的屏幕截图。

若要使此组件正常工作,需要附加到一个或多个触发器碰撞体。 (这些触发器对撞机也可以嵌套在附加此组件的 GameObject 下面的转换层次结构中。

任何触摸或重叠触发器碰撞体(“触发音量”)的刚性体都体验浮力(上行),以保持它们漂浮。

此组件使用刚性碰撞体的形状来计算其密度(换句话说,体积除以质量)、浮力、拖动和摩擦。

浮能对撞机

优点:性能。 浮点计算的计算成本与碰撞体顶点数线性缩放。 典型的物理碰撞体,即使已经简化,往往比浮力工作足够好的要求要复杂得多(在顶点数量方面)。

如何使用:向身体添加一个(或几个)其他碰撞体(可以禁用它们)。 通过将名为 BuoyancyHull (确切的拼写问题!)的物理材料分配给它们,将碰撞体标记为显式浮标外壳。 此物理材料的配置详细信息并不重要 - 网格工具包包提供了合适的物理材料。 如果人体具有任何标记为这样的碰撞体,则只有这些碰撞体用于浮力计算:将忽略所有其他碰撞体。

最佳做法:显式浮标外壳碰撞体与任何可能被扔进 BuoyancyField的刚性碰撞体。 使用多维数据集碰撞体是最好的(也是最简单的),因为它们具有最少的顶点(每对撞机 8 个)。 通常不需要匹配浮标体确切的视觉形状才能获得良好的结果:一个非常粗糙的近似值通常是足够的。

设置:

  • 密度 是模拟液体的密度,以每立方米公斤为单位“填充”触发量。 (默认值表示温度下水的近似密度。
  • Surface Type 指定组件如何对水面的形状进行采样以计算浮力。
    • 静态平面 假定水面是完全平面的,从不从其在场景中的初始位置移动。 当场景开始时,水面的位置和方向只确定一次。 这是计算成本最低的选项。
    • 动态平面 假定水面是完全平面的,但允许它移动(例如,水位可以上升或下沉)。 每个帧确定水面的位置和方向一次。
    • 动态平面 Per Body 支持不平面的水面(例如,它可以是波浪)。 对于漂浮在水面上的每一个刚性体,每个框架下水面的局部平面近似值是每帧确定一次,然后用于计算这种刚性的浮力。
  • 受影响的正文 定义 可在此浮标字段中浮动的主体的可选筛选条件 。 (默认情况下,所有机构都符合条件。
  • 拖动 控制运动阻力,因为僵硬的人击中水(换句话说,摩擦正交到身体表面)。
  • 皮肤摩擦 控制运动阻力,因为僵硬的人通过水移动(换句话说,摩擦平行于身体表面)。

重要说明! 若要允许组件访问刚性的碰撞体网格三角形,必须在碰撞体网格 的导入 设置中选择“已启用读/写”复选框。 否则,浮标字段将忽略正文,并且不会受到该字段的影响。

重要说明! 确保物理体具有合理的质量,以确保它们在浮力领域按预期方式运行:

  • 如果一个刚性的重量与它的体积不相上下,它将沉入底部。
  • 如果刚性体的质量与它的体积(例如 Unity Rigidbody 的一个质量单位的默认值)相比非常低,它只会坐在模拟液体的顶部。

默认情况下,浮标字段会采样触发器卷的表面,以确定水面的形状(受所选 水面类型 设置的约束)。 以这种方式对 CPU 内存中动画的图面进行采样,但 GPU 顶点着色器对脚本进行动画处理的图面在运行时不可见。 该 BuoyancyField 组件提供一个名为脚本的可访问回调委托,该委托 GetDistanceFromSurface 允许外部脚本提供有关 GPU 动画水面形状的信息。

BuoyancyFieldWaves请参阅下面的组件,了解如何使用无代码方法获取波浪水面。

浮力场波

适用于特定顶点着色器的 BuoyancyFieldWaves_VertexPosition 组件的加载项BuoyancyField(可用作子着色器图和 HLSL 包含文件)。 这将创建波浪水面的视觉效果,以及漂浮在水面上的对象的相应行为。

检查器中浮能场波形脚本选项的屏幕截图。

必须将此组件添加到已添加组件的 BuoyancyField GameObject。

要进行动画处理的水面必须作为平面细化网格提供,其边界是从上到下时水面的所需形状。 用于水面的材料必须使用包含 BuoyancyFieldWaves_VertexPosition 子着色器的着色器来确定网格的顶点位置。 可以将包含的示例 BasicWavyWaterSurface 材料(和具有相同名称的着色器图)用作你自己的着色器开发起点。

设置:

  • 波形网格呈现器 引用 MeshRenderer 呈现水面网格的组件。
    • 材料 显示呈现器使用哪些材料。 此信息仅供参考。
    • 着色器 显示材料使用哪种着色器。 此信息仅供参考。
  • 波形着色器属性名称 定义着色器属性的名称,这些属性必须由着色器公开。 此组件在运行时访问这些属性,以确保浮点字段的行为与所有客户端的水面视觉对象保持同步。
    • 脚本控制时间 是公开 float的 -type 着色器属性的名称,该属性将由 此组件持续更新 ,每个帧都有一个持续增加的时间(以秒为单位),该时间跨所有客户端同步。 子 BuoyancyFieldWaves_VertexPosition 着色器使用此共享时间创建一个波模式,该模式在所有客户端上保持同步,并与浮点字段的行为保持同步。
    • 波形速度 是公开 float的 -type 着色器属性的名称,用于确定 波水平传播的基本速度 。 必须在应用于波面网格的材料中设置属性值本身。 将此设置为零会使波形图面变为静态和未移动。
    • 波形长度 是公开 float的 -type 着色器属性的名称,用于确定 波模式的粗糙性 。 必须在应用于波面网格的材料中设置属性值本身。 较小的值生成短波纹;较大的值产生长、横扫的波。
    • 波形高度 是公开 float的 -type 着色器属性的名称,用于 确定波形的基本高度 。 必须在应用于波面网格的材料中设置属性值本身。 将此设置为零会使波面完全平整。

包含的示例 BasicWavyWaterSurface 着色器图(由具有相同名称的材料使用)使用所需的 BuoyancyFieldWaves_VertexPosition 顶点子着色器生成波浪 3D 表面,但只包括片段着色器的最小独立实现,这使得它呈现表面为无阴影的纯色半透明网格。

着色器图形编辑器中基本波浪水面着色器图的屏幕截图。

可以自定义与组件完全一起使用BuoyancyFieldWaves的着色器的片段路径,以便你喜欢。 但是,着色器的顶点路径必须使用BuoyancyFieldWaves_VertexPosition子着色器图,并且它将此子着色器图的四个输入公开为float总体着色器图的 -type 着色器属性,以便组件可以在运行时访问它们。 如果着色器无法包含所需的子着色器图,或者未公开任何必需的着色器属性,则组件的检查器将在设计时显示错误消息,浮标在运行时将无法工作:

显示错误消息的 Buoyancy FieldWave 脚本选项的屏幕截图:未使用必需的顶点子着色器。

显示错误消息的 Buoyancy 字段波形脚本选项的屏幕截图:着色器属性未由材料公开。

示例 BasicWavyWaterSurface 着色器图可以作为内容开发过程中的备用着色器,并作为你自己的着色器开发的起点。 或者,可以采用现有的水面着色器,保留其 片段 路径,并仅替换其 顶点 路径。

最大 Angular 速度

替代物理体的默认最大角速度。

检查器中 Max Angular Velocity 脚本选项的屏幕截图。

物理引擎不允许刚性体超过这种角速度。 这可用于限制给定刚性的滚动速度,或者允许其滚动速度比物理默认值快,即每秒 50 弧度(大约每秒 8 次革命)。

最大角速度必须以每秒弧度为单位输入。 输入的值还以秒(180 度≈ 3.14 弧度)和每秒革命(1 次革命 = 360 度≈ 6.28 弧度)显示。

速度级字段

允许刚性的加速/减速,直到达到允许范围内的速度。

检查器中速度字段脚本选项的屏幕截图。

此组件控制速度的大小,并保持当前方向。 如果对象仍然存在,它将选择一个帧持续时间的随机方向。 有两种操作模式:

  • 如果附加到一个僵硬的人,这种刚性的人将被控制。
  • 如果附加到触发器碰撞体,则进入此触发器卷的所有刚性体都将受到影响。

设置:

  • 速度类型 定义是处理线性还是角速度。
  • 在角速度的情况下,速度限制 设置最小和最大速度(或弧度/秒)的所需限制( 或弧度/秒)。 如果当前速度低于其速度将加速的最小值,则如果速度超过最大速度,则正文将减速。 如果当前速度已在限制范围内,则脚本不起作用。 若要设置特定的目标速度,请将最小值和最大值设置为相同的值。
  • 最大加速 定义应用于达到目标速度的最大加速。
  • 加速类型 定义达到目标速度的加速类型。
    • 即时将立即达到速度限制(与最大加速 = 无限的恒定加速 相同)。
    • 恒定加速将确保正文达到目标速度,无论在最大加速设置的限制范围内。
    • 平滑方法 可减少接近目标速度的加速。 这意味着,在实践中,你永远不会达到目标速度。 此外,如果有任何外部影响,如上坡或下坡,这种额外的影响不会完全被覆盖,导致下降的速度比上坡更快。
  • 受影响的正文 定义 受此组件影响的正文的可选筛选条件 。 (默认情况下,所有身体都受到影响。

对齐字段

将正文与指定的轴对齐。

检查器中“对齐字段”脚本选项的屏幕截图。

此组件向身体添加制动力,使其与特定方向对齐。 请注意,制动力始终应用于向目标旋转身体的方向。 有两种操作模式:

  • 如果附加到一个僵硬的人,这个僵硬的人将被对齐。
  • 如果附加到触发器碰撞体,则进入此触发器卷的所有刚性体都将对齐。

设置:

  • 刚性轴 设置要与目标对齐的受影响刚性的轴。
  • 对齐模式 提供不同的模式来指定目标对齐方式:
    • 在全局空间 中,指定全局空间中的目标对齐方式。
    • 在本地空间 中指定目标对齐方式(仅对触发器卷有意义)。
    • 方向速度 ,使主体与其线性速度对齐。
    • Tos Game Object , to align the body to to a target gameobject.
  • 目标对齐 设置对齐的目标方向。 (仅当 对齐模式 设置为 “全局空间 ”或 “本地空间”。
  • 目标游戏对象 设置对齐目标方向。 (仅当 对齐模式 设置为 “面向游戏对象”。
  • 扭力乘法器 缩放应用的制动力以达到目标对齐;更高的乘数更快地旋转身体(介于 1 到 1000 之间)。
  • 阻尼系数 设置阻尼因子(介于 0 和 5 之间)。 当设置为低于 1 时,身体可能会在目标方向周围振荡。

速度方向字段

允许引导刚性体,直到速度达到目标方向。

检查器中速度方向字段脚本选项的屏幕截图。

此组件仅控制速度的方向并保持当前速度。 有两种操作模式:

  • 如果附加到一个僵硬的人,这种刚性的人将被控制。
  • 如果附加到触发器碰撞体,则进入此触发器卷的所有刚性体都将受到影响。

设置:

  • 速度类型 定义是处理线性还是角速度。
  • 遵循 Game Object 定义目标是预定义的方向还是指向特定 GameObject 的方向。 仅适用于线性速度。
  • 目标正文 (如果 “关注游戏对象 ”设置为 true):设置所需的跟随方向。
  • 目标方向 设置所需的方向。 此值已规范化,因此数量级没有影响。
  • 方向本地空间 定义方向是否在爆炸的局部转换中指定。
  • 最大加速 定义应用于达到目标速度的最大加速。
  • 加速类型 定义达到目标速度的加速类型。
    • 瞬间将立即到达目标方向(与最大加速 = 无穷大相同的常量加速)。
    • 恒定加速将确保正文达到目标速度,无论在最大加速设置的限制范围内。
    • 平滑方法 可减少接近目标速度的加速。 这意味着,实际上,你永远不会达到目标速度。 此外,如果有任何外部影响,如上坡或下坡,这种额外的影响不会完全被覆盖,导致下降的速度比上坡更快。
  • 受影响的正文 定义 受此组件影响的正文的可选筛选条件 。 (默认情况下,所有身体都受到影响。

磁体

给身体一个磁属性,以吸引或驱逐其他身体。

检查器中磁体脚本选项的屏幕截图。

若要使此组件正常工作,它需要附加到一个或多个碰撞体。 (这些碰撞体也可以嵌套在附加此组件的转换层次结构中 GameObject 。每个碰撞体对其他僵硬体表现出一种力,这些僵硬体足够接近这种碰撞体。

设置:

  • 强度 定义接触点磁石的加速(当碰撞体之间的距离为零时)。
  • 影响 距离控制磁力的范围。 仅当碰撞体之间的最短距离较小时,才应用磁力。
  • 字段类型 定义磁力随距离减弱的方式。
    • 常量 假定磁力与距离无关。
    • 线性 假设磁力从 强度 线性下降到零( 在影响距离)。
    • 反函数 假定与距离成正比的依赖性。
    • 逆平方 假定与距离平方(类似于真正的磁铁)成反比例的依赖性。
  • 磁极 控制被此对象吸引或驱赶的对象。
    • 北极 吸引 南极 ,并驱逐 北极
    • 南极 吸引了 北极 ,并驱逐 南极
    • 力同时 吸引南极北极
  • 禁用重力接触:如果已启用,并且磁铁的强度比重力大两倍,则与该磁体接触的物体将禁用重力。 其中一个对象必须是静态的,这样才能产生影响。 这通常用于防止身体在墙上滑动。

球面爆炸

产生爆炸,导致特定半径内的所有尸体向外移动。

检查器中球形爆炸脚本选项的屏幕截图。

爆炸力取决于僵硬体的质量(可能与爆炸中心之间的距离)。

设置:

  • 强度 定义爆炸对米/秒的尸体的影响。 实际速度变化较少,具体取决于爆炸类型和关键质量(请参阅下文)。
  • 影响 距离控制爆炸力的范围。
  • 字段类型 定义爆炸效果如何随着距离而减弱。
    • 常量 假定效果与距离无关。
    • 线性放置 假定效果从最大下降到零(在 影响距离)。
  • 关键质量 定义身体质量不受爆炸影响。 比较轻的身体更重的身体感觉不太有效。 例如,一个重达三分之一的关键质量的刚性体将感受到速度变化三分之二。
  • Angular 脉冲刻度 定义应用力的位置。 如果设置为 0,则力应用于质量中心,这意味着没有旋转。 如果设置为 1,则力应用于离爆炸最近的点。
  • 如果启用遮挡,则隐藏在其他对象后面的对象不会感到爆炸。 仅检查爆炸中心与质量中心之间的单个光线是否存在遮挡。

方向爆炸

创建一个爆炸,导致触发器内的所有尸体都向特定方向移动。

检查器中方向 Eplosion 脚本选项的屏幕截图。

爆炸力取决于僵硬的体质。 若要使此组件正常工作,它需要附加到触发器对撞机。 触发器碰撞体中的所有主体都会受到影响。

设置:

  • 强度 定义爆炸对米/秒的尸体的影响。 实际速度变化较少, 具体取决于关键质量 (请参阅下文)。
  • 方向 定义爆炸的方向。 此值已规范化,因此数量级没有影响。
  • 方向本地空间 定义方向是否在爆炸的局部转换中指定。
  • 关键质量 定义身体质量不受爆炸影响。 比较轻的身体更重的身体感觉不太有效。 例如,一个重达三分之一的关键质量的刚性体将感受到速度变化三分之二。
  • Angular 脉冲刻度 定义应用力的位置。 如果设置为 0,则力应用于质量中心,这意味着没有旋转。 如果设置为 1,则力应用于离爆炸最近的点。
  • 受影响的正文 定义受此组件影响的正文的可选筛选条件。 (默认情况下,所有身体都受到影响。

联合防抖动

通过调整刚性的惯性张量来稳定约束系统。

检查器中联合稳定脚本选项的屏幕截图。

该脚本适用于附加了 Rigidbody 或 Joint 组件的所有子级。

设置:

  • 稳定因子 定义为稳定性牺牲物理正确性多少。 例如,1 -> 大多数物理正确,4> - 妥协,10 -> 稳定与项目。
  • 联合投影 可对所有子级启用约束投影。 这可以极大地提高稳定性,但牺牲了身体的正确性。 它仅适用于可配置和字符关节。
  • 投影距离 定义允许的最大约束冲突。 若要避免物理问题,请尝试尽可能高地设置此值。

弹跳图面

创建一个弹跳图面,该图面导致所有碰撞对象以预定义的速度弹跳。

检查器中弹跳 Surface 脚本选项的屏幕截图。

设置:

  • 弹跳速度量 级定义弹跳后对象的最小和最大速度级。 有关如何确定方向,请参阅 “弹跳效果 ”。 如果要指定单个目标速度,请将 MinMax 设置为等于值。
  • 弹跳效果 定义弹跳对象的预期行为。
    • 完美弹跳:传入速度到碰撞平面法线的角度与传出速度的角度相同。
    • 设置速度数量级:传出速度到正常的角度受摩擦影响。
    • 设置正常速度:类似于设置速度,但弹跳速度量级定义垂直平面的速度(正常速度)。
    • 向目标正文弹跳:传出速度的方向定向到目标正文。 如果选择此选项, 则会显示“目标正文 ”属性,必须设置。
  • 摩擦 控制在碰撞时损失多少正切速度。 当设置为 0 时,弹跳对象将保留正切速度。 当设置为 1 时,对象在垂直于表面的方向反弹(正切速度为 0)。 对于值超过 1,对象会向后反弹。

质量偏移中心

抵消僵化体的质量中心。

检查器中“质量偏移中心”脚本选项的屏幕截图。

设置:

  • 本地坐标 中的偏移量定义本地坐标中的偏移量。

本地物理范围

此组件下的层次结构中的所有刚性体不会在客户端之间同步。 此脚本应添加到通过视觉脚本或动画设置其位置或旋转的刚性体。

检查器中本地物理范围设置的屏幕截图。

了解网格可视化脚本物理事件节点

引发轨迹

根据重力的影响计算刚性体在自由空间中的未来位置。

检查器中引发轨迹脚本选项的屏幕截图。

设置:

  • 刚性模式:设置为 true 时,将刚性体位置和速度视为初始条件。 启用实时未来位置计算。
  • 刚性体(仅当刚性模式设置为 true适用):定义采用哪种刚性体。
  • 初始速度:(仅当刚性模式设置为 false 时适用):定义初始速度。 初始位置取自此组件的 GameObject 位置。
  • 最大点数:定义计算点的最大数目。
  • 时间步骤:定义未来位置之间的时间差。
  • 重力:这是引力加速。
  • 线条呈现器:指定将点的位置复制到的线条呈现器。 这将显示引发轨迹。

重置正文转换

当由视觉脚本触发时,此组件会将同一转换或任何子转换上所有物理体的位置和旋转重置为其初始值。

检查器中重置正文转换组件的屏幕截图。

设置:

  • 初始自动保存:如果选择,请在环境启动时使用转换作为重置转换。 如果未选中,则必须使用可视脚本调用 “保存正文转换现在 ”函数,以在执行重置之前保存重置转换。

可用于视觉脚本的函数

  • 立即重置正文转换:将此 重置正文转换 组件范围内所有物理体的位置和旋转重置为最近保存的重置转换。 仅在一个客户端上调用此值。

“重置正文转换”组件的屏幕截图,其中“重置正文转换现在”仅突出显示了“播放模式”按钮。

“重置正文转换”组件的屏幕截图,其中突出显示了“重置正文转换”按钮。

  • 保存正文转换现在 保存此 重置正文转换 组件范围内所有物理体在重置转换中的当前位置和旋转。 仅在一个客户端上调用此值。

后续步骤