目录
1. 2D 距离关节 (Distance Joint 2D)
2.2D 浮力效应器 (Buoyancy Effector 2D)
3.2D 表面效应器 (Surface Effector 2D)
一. 简介
在 Unity 中,2D 关节(2D Joints)为开发者提供了一种模拟二维物理连接的方式,可用于创建更真实的物理效果和有趣的游戏机制。以下是对 Unity 2D 关节的简介:
A、主要类型
-
固定关节(Fixed Joint 2D)
- 作用:将两个游戏对象固定在一起,使它们在物理模拟中表现为一个整体。
- 特点:可以限制两个物体之间的相对运动,保持它们在特定位置或方向上的连接。例如,用于连接两个静态的平台,使其在受到外力时不会分离。
-
可移动关节(Distance Joint 2D)
- 作用:在两个游戏对象之间创建一个可伸缩的连接,类似于弹簧或绳子。
- 特点:可以设置连接的初始距离、最大和最小长度等参数。当两个物体之间的距离发生变化时,关节会产生相应的力来试图恢复到初始距离。例如,可用于制作秋千或弹性连接的物体。
-
旋转关节(Hinge Joint 2D)
- 作用:模拟门轴或铰链的效果,允许一个物体围绕另一个物体旋转。
- 特点:可以设置旋转的轴心点、旋转的限制角度等参数。例如,用于制作门、风车等可旋转的物体。
-
滑块关节(Slider Joint 2D)
- 作用:限制两个物体之间的相对运动为线性滑动,类似于抽屉的滑轨。
- 特点:可以设置滑动的方向、最大和最小滑动距离等参数。例如,用于制作可滑动的平台或抽屉。
B、使用方法
-
添加关节组件
- 在 Unity 编辑器中,选择需要添加关节的游戏对象,然后通过 “Add Component” 菜单添加相应的 2D 关节组件。例如,要添加一个可移动关节,可以选择 “Distance Joint 2D” 组件。
-
配置关节参数
- 根据不同的关节类型,设置相应的参数。例如,对于可移动关节,可以设置连接的两个物体、初始距离、弹性系数等参数。这些参数可以在 Inspector 面板中进行调整。
-
连接游戏对象
- 将关节连接到相应的游戏对象上。通常,一个关节会连接两个游戏对象,一个作为主体,另一个作为连接的目标。在 Inspector 面板中,可以通过拖拽的方式将游戏对象分配给关节的相应属性。
C、应用场景
-
物理模拟
- 用于创建更真实的物理效果,如模拟物体之间的连接、弹性、旋转等。例如,在一个赛车游戏中,可以使用关节来连接车轮和车身,使车轮能够真实地旋转和悬挂。
-
游戏机制
- 创造有趣的游戏机制,如可破坏的连接、可拉伸的物体等。例如,在一个解谜游戏中,可以使用可移动关节来制作可拉动的机关,玩家需要通过调整关节的长度来触发特定的事件。
-
动画效果
- 结合动画系统,实现更复杂的动画效果。例如,使用旋转关节来制作角色的关节动画,使角色的动作更加自然和流畅。
二. 详细使用
1. 2D 距离关节 (Distance Joint 2D)
属性: | 功能: |
---|---|
启用碰撞 | 选中此框可允许两个连接的游戏对象之间发生碰撞。 |
连接刚体 | 使用此字段来指定该 2D 距离关节连接到的另一个游戏对象。如果将此字段保留为 None (Rigidbody 2D),2D 距离关节的另一端将固定到空间中由 Connected Anchor 设置所定义的点。选择字段右侧的圆圈可查看要连接到的游戏对象的列表。 |
Auto Configure Connected Anchor | 选中此框可为该 2D 距离关节连接到的另一个游戏对象自动设置锚点位置。如果启用此选项,则无需填写 Connected Anchor 字段。 |
Anchor | 定义 2D 距离关节的端点连接到此游戏对象的位置(以 2D 刚体__上的 x、y 坐标表示)。 | |Connected Anchor__ |
距离 | 指定 2D 距离关节在两个游戏对象之间保持的距离。 |
仅最大距离 | 如果启用此选项,则 2D 距离关节仅强制执行最大距离,因此连接的游戏对象仍然可以彼此靠近,但不能超出 Distance 字段定义的距离。如果未启用,则游戏对象之间的距离为固定距离。 |
Break Force | 指定破坏并进而删除 2D 距离关节所需的作用力水平。Infinity 表示关节牢不可破。 |
效果演示
修改方块的类型为这个
然后效果为
2.2D 固定关节 (Fixed Joint 2D)
启用碰撞 | 选中此框可允许两个连接的游戏对象相互碰撞。 |
连接刚体 | 指定此 2D 固定关节连接到的另一个游戏对象。将此属性保留为 None 可将 2D 固定关节的另一端固定到空间中由 Connected Anchor 设置所定义的点。选择字段右侧的圆圈可查看要连接到的游戏对象的列表。 |
Auto Configure Connected Anchor | 选中此框可为该 2D 固定关节连接到的另一个游戏对象自动设置锚点位置。如果选中此框,则无需填写 Connected Anchor 字段。 |
Anchor | 关节端点连接到此对象的位置(以 2D 刚体__上的 x、y 坐标表示)。 | |Connected Anchor__ |
频率 | 游戏对象接近所需的间隔距离时弹簧振荡的频率(以每秒周期数表示)。频率值介于 1 到 1,000,000 范围内,值越高,弹簧越硬。请注意,如果频率设置为 0,则弹簧完全僵硬。 |
Break Force | 指定破坏并进而删除关节所需的作用力水平。Infinity 表示关节牢不可破。 |
Break Torque | 指定破坏并进而删除关节所需的扭矩水平。Infinity 表示关节牢不可破 |
3.2D 铰链关节 (Hinge Joint 2D)
属性: | 功能: |
---|---|
启用碰撞 | 选中此框可允许两个连接的游戏对象之间发生碰撞。 |
连接刚体 | 指定此 2D 铰链关节连接到的另一个游戏对象。如果将此属性保留为 None__,2D 铰链关节的另一端将固定到空间中由 Connected Anchor__ 设置所定义的点。选择字段右侧的圆圈可查看要连接到的游戏对象的列表。 |
Auto Configure Connected Anchor | 选中此框可为该 2D 铰链关节连接到的另一个游戏对象自动设置锚点位置。如果选中此框,则无需填写 Connected Anchor 字段。 |
Anchor | 定义 2D 摩擦关节的端点连接到此游戏对象的位置(以 2D 刚体__上的 x、y 坐标表示)。 | |Connected Anchor__ |
Motor Speed | 设置目标电机速度(度/秒)。 |
Maximum Motor Force | 设置在尝试达到目标速度时电机可以施加的最大扭矩(或旋转)。 |
Use Limits | 选中此框可限制旋转角度 |
Angle Limits | 如果已启用 Use Limits__,则可使用这些设置来设定限制。 | |Lower Angle__ |
Upper Angle | 设置此限制允许的旋转弧的上限。 |
Break Force | 指定破坏并进而删除关节所需的线性(或直线)力水平。Infinity 表示关节牢不可破。 |
Break Torque | 指定破坏并进而删除关节所需的角度(或旋转)水平。Infinity 表示关节牢不可破。 |
效果
4.2D 相对关节 (Relative Joint 2D)
5.2D 弹簧关节 (Spring Joint 2D)
6.2D 车轮关节 (Wheel Joint 2D)
7.2D 恒定力 (Constant Force 2D)
组件可用于快速向 2D 刚体__添加恒定力。如果希望火箭等一次性发射的物体随着时间推移而加速,而不是以很快的速度开始,则很适合使用此组件。
三. 2D效应器
2D 效应器(2D Effector)是用于控制二维物理模拟中物体之间相互作用的组件。
配合触发器使用
勾选上这两个选项.
1.2D 区域效应器 (Area Effector 2D)
属性: | 功能: |
---|---|
使用碰撞体蒙版 | 选中此选项可启用 Collider Mask 属性。如果未启用此选项,则所有 2D 碰撞体都将默认采用全局碰撞矩阵 (Global Collision Matrix)。 |
Collider Mask | 此遮罩用于选择允许与 2D 区域效应器进行交互的特定层。 |
Use Global Angle | 选中此选项可将 Force Angle 定义为全局(世界空间)角度。如果未选中,物理引擎会将 Force Angle 视为局部角度。 |
Force Angle | 要施加的力的角度。 |
力的大小 | 要施加的力的大小。 |
Force Variation | 要施加的力的大小变化。 |
Drag | 应用于 2D 刚体的线性阻力。 |
Angular Drag | 应用于 2D 刚体的角阻力。 |
力目标 | 2D 区域效应器在目标游戏对象上施力的作用点。 |
Collider | 目标点定义为 2D 碰撞体的当前位置。如果 2D 碰撞体没有位于质心处,则在此处施力会产生扭矩(旋转)。 |
Rigidbody | 目标点定义为 2D 刚体的当前质心。在此处施力绝对不会产生扭矩(旋转)。 |
2.2D 浮力效应器 (Buoyancy Effector 2D)
属性: | 功能: |
---|---|
使用碰撞体蒙版 | 选中此框可启用“Collider Mask”属性。如果未启用此选项,则所有 2D 碰撞体都将默认采用全局碰撞矩阵 (Global Collision Matrix)。 |
Collider Mask | 此遮罩用于选择允许与效应器进行交互的特定层。请注意,仅在已选择 Use Collider Mask 的情况下,才显示此选项。 |
Surface Level | 定义浮力流体的表面位置。游戏对象高于此线时,不会对其施加浮力。游戏对象与此线相交或完全在此线下方时,将对其施加浮力。此位置指定为沿世界 y 轴的世界空间偏移,但也由游戏对象的__变换__组件缩放。 |
Density | 流体的密度。密度较大的碰撞体会下沉,密度较小的碰撞体会上浮,密度与流体相同的碰撞体会悬浮在流体中。 |
Linear Drag | 影响游戏对象位置移动的阻力系数。该系数仅适用于流体内部。 |
Angular Drag | 影响游戏对象旋转移动的阻力系数。该系数仅适用于流体内部。 |
Flow Angle | 流体流动方向的世界空间角度(以度为单位)。流体流动将沿指定方向施加浮力。 |
Flow Magnitude | 流体流动力的“力量”。此项与 Fluid Angle 结合,共同指定施加于流体内游戏对象的浮力水平。此大小也可以为负值,在此情况下,以相对于 Flow Angle 的 180 度方向施加浮力。 |
Flow Variation | 在此处输入一个随机改变流体力的值。可指定正负变化来表示 Fluid Magnitude 的随机加减值。 |