Unity - 2D物理系统

Unity - 2D物理系统

PS: 通用属性放在每一章最前面,每个组件只介绍特殊属性;

1.1 2D刚体(Rigidbody 2D)
属性描述
Body Type Dynamic(动力学):适用于需要移动并且接受完全物理模拟的2D刚体,包括重力、碰撞和施加力等影响;
Kinematic(运动学):适用于需要移动但不受物理力作用的2D刚体;
Static(静态):适用于不需要移动的2D刚体,它们作为游戏中的静态环境或障碍物存在;
Material可装载 2D 物理材质;
Simulated勾选后开启物理模拟;
Use Auto Mass勾选后根据碰撞体大小自动生成质量,并禁止手动设置质量;
Mass设置对象的质量;
Linear Drag影响位置移动的阻力系数;
Angular Drag影响旋转移动的阻力系数;
Gravity Scale定义游戏对象受重力影响的程度;
Collision Detection Discrete(离散模式):只有真正触碰到才触发碰撞事件;
Continuous(连续模式):连续检测会对整个路径都进行检测,一般用于解决子弹速度过快穿过目标的情况;
Sleeping Mode Never Sleep(禁用睡眠):刚体一直启用;
Start Awake:对象在最初时刚体处于启用状态;
Start Asleep:对象最初时刚体处于睡眠状态,但可以被碰撞唤醒;
Interpolate None:不应用移动平滑;
Interpolate:根据对象在先前帧中的位置来平滑移动;
Extrapolate:根据对象在下一帧中的估计位置来平滑移动。
Constraints Freeze Position(冻结位置):可以通过勾选取消 X 和 Y 轴的移动;
Freeze Rotation(冻结旋转):可以通过勾选取消 Z 轴的旋转;
1.2 2D 碰撞体
2D 碰撞体类别说明
Circle Collider 2D圆形碰撞体
Box Collider 2D盒子(矩形)碰撞体
Polygon Collider 2D多边形碰撞体
Edge Collider 2D线段(边界)碰撞体
Capsule Collider 2D胶囊碰撞体
Composite Collider 2D复合碰撞体
通用属性
属性描述
Material 可装载 2D 物理材质;
Is Trigger勾选后标记为触发器,触发器没有物理状态;
Used By Effector勾选后启用效应器;
Used By Composite勾选后合并到复合碰撞体
Auto Tiling自适应碰撞器大小;
Offset根据 X 、Y 轴对碰撞体进行偏移;
Size根据 X 、Y 轴对碰撞体进行缩放
Edge Radius默认为 0 ,可以增加碰撞体积,且值越大边缘越近似圆;
Auto Tiling自适应碰撞器大小;
Polygon Collider 2D
属性描述
Points Paths - Size:碰撞体数量;
Paths - Element m:对应第 m+1 个碰撞体;
Paths - Element m - Size:第 m+1 个碰撞体点的数量;
Paths - Element m - Element n:第 m+1 个碰撞体的第 n+1 个点,X、Y 表示坐标位置;
Edge Collider 2D
属性描述
Points Size:点的数量;
Element n:对应第 n+1 个点,X、Y 表示坐标位置;
Use Adjacent Start Point 启用后开启起点碰撞法线,X、Y 表示坐标位置;
Use Adjacent End Point 启用后开启终点碰撞法线,X、Y 表示坐标位置;
Capsule Collider 2D
属性描述
Direction Vertical:碰撞体的垂直高度大于等于水平高度;
Horizontal:碰撞体的水平高度大于等于垂直高度;
Composite Collider 2D
属性描述
Geometry Type Outlines:组合碰撞体时生成空心的轮廓;
Polygons:组合碰撞体时生成实心的轮廓;
Generation Type Synchronous:更改 2D 复合碰撞体时或者更改其任何成员碰撞体时立即自动生成新的碰撞体;
Manual:更改 2D 复合碰撞体时或者更改其任何成员碰撞体时需要手动设置碰撞体;
Vertex Distance 设置从复合碰撞体中的顶点所允许的最小间距。低于限值的顶点将被删除;
Offset Distance 设置的数值增大,这个复合碰撞器的范围会向中心位置收缩,当增大到达一定数值后,这个复合碰撞器的范围会完全消失;
碰撞检测脚本
using UnityEngine;

//碰撞器测试类
public class CollisionTest : MonoBehaviour
{
    //碰撞开始
    private void OnCollisionEnter2D(Collision2D collision)
    {
        Debug.Log("Enter");
    }
    //碰撞持续
    private void OnCollisionStay2D(Collision2D collision)
    {
        Debug.Log("Stay");
    }
    //碰撞结束
    private void OnCollisionExit2D(Collision2D collision)
    {
        Debug.Log("Exit");
    }
}

//触发器测试类
public class TriggerTest : MonoBehaviour
{
    //触发开始
    private void OnTriggerEnter2D(Collider2D collision)
    {
        Debug.Log("Enter");
    }
    //触发持续
    private void OnTriggerStay2D(Collider2D collision)
    {
        Debug.Log("Stay");
    }
    //触发结束
    private void OnTriggerExit2D(Collider2D collision)
    {
        Debug.Log("Exit");
    }
}
1.3 Physics Material 2D(2D物理材质)
属性描述
Friction 取值 0 - 1,增大该值增加物理摩擦力;
Bounciness 启用后开启起点碰撞法线,X、Y 表示坐标位置;
Use Adjacent End Point 碰撞从表面反弹的程度。值为 0 表示没有弹性,值为 1 表示完美弹性,没有能量损失;
1.4 2D 恒定力 (Constant Force 2D)
属性描述
Force 在世界坐标空间中应用的力的向量,X 为横向,Y 为纵向;
Relative Force 在本地坐标空间中应用的力的向量,X 为横向,Y 为纵向;
Torque 在世界坐标空间中应用的扭矩的向量,对象会围绕此向量开始旋转。此向量越长,旋转便越快;
1.5 2D 关节
2D 关节类别描述
Hinge Joint 2D2D铰链关节
Distance Joint 2D2D距离关节
Fixed Joint 2D2D固定关节
Friction Joint 2D2D摩擦关节
Relative Joint 2D2D相对关节
Slider Joint 2D2D 滑动关节
Spring Joint 2D2D 弹簧关节
Target Joint 2D2D 目标关节
Wheel Joint 2D2D 车轮关节
通用属性
属性描述
Enable Collision 勾选后允许两个连接的对象之间发生碰撞;
Connected Rigid Body连接到的另一个刚体对象;
Auto Configure Connected Anchor勾选后自动设置连接锚点位置;
Anchor设置锚点位置;
Connected Anchor设置连接锚点位置;
Use Motor勾选后开启马达;
Motor Motor Speed:指定马达速度;
Maximum Motor Force:马达可以施加的最大扭矩;
Use Limits勾选后启用角度限制;
Angle Limits Lower Angle:最低角度;
Upper Angle:最高角度;
Break Force受到最大限制的力后断开,设置为 Infinity 表示不会因为力断开;
Break Torque受到最大限制的扭矩后断开,设置为 Infinity 表示不会因为扭矩断开;
Distance Joint 2D
属性描述
Auto Configure Distance 勾选后自动设置距离;
Distance 手动指定距离;
Max Distance Only 勾选后 Distance 设置的值为对象的最大距离;
Fixed Joint 2D
属性描述
Damping Ratio 抑制弹簧振荡的程度,0 到 1 之间,值越大;
Frequency 控制弹簧的硬度,决定了对象振动频率;
Friction Joint 2D
属性描述
Max Force 降低对象线速度的力;
Max Torque 降低对象角速度的力;
Relative Joint 2D
属性描述
Max Force 能受到的最大力;
Max Torque 能受到的最大扭矩;
Correction Scale 确保关节的行为符合预期,默认为0.3;
Auto Configure Offset 自动设置偏移量;
Linear Offset 给定 X、Y 轴的线性偏移量;
Angular Offset 给定角偏移量;
Slider Joint 2D
属性描述
Auto Configure Angle 勾选后自动设置滑动角度;
Translation Limits Lower Translation:滑动最小偏移量;
Upper Translation:滑动最大偏移量;
Auto Configure Distance 勾选后自动设置距离;
Distance 给定弹簧的长度;
Target Joint 2D
属性描述
Auto Configure Target 自动设置目标点;
Target 给定一个目标点坐标;
1.6 2D 效应器
2D 效应器类别描述
Area Effector 2D2D 区域效应器
Buoyancy Effector 2D2D 浮力效应器
Point Effector 2D2D 点效应器
Platform Effector 2D2D 平台效应器
Surface Effector 2D2D 表面效应器
通用属性
Drag:线性阻力;
Angular Drag:角阻力;
属性描述
Use Collider Mask 使用碰撞遮罩过滤层级之间的碰撞,通过Collider Mask指定;
Force Use Global Angle:勾选后使用全局角度;
Force Angle:施加力的角度;
Force Magnitude:施加力的大小;
Force Variation:力的大小浮动;
Force Target:指定作用力的目标;
Damping
Buoyancy Effector 2D
属性描述
Density 流体的密度,密度较大的碰撞体会下沉,密度较小的碰撞体会上浮;
Surface Level 浮力流体的位置,对象高于此线时,不会对其施加浮力。
Flow Flow Angle:水流角度;
Flow Magnitude:水流大小;
Flow Variation:水流大小的浮动值;
Point Effector 2D
属性描述
Force Force Magnitude:施加的力,负值为吸引力,正值为斥力;
Force Variation:力的大小浮动;
Distance Scale:效应器和目标之间距离的缩放,计算距离时,会按照该比值对距离进行缩放;
Force Source:力的源头,可选刚体或碰撞器;
Force Target:作用力的对象,可选刚体或碰撞器;
Force Mode:Constant(忽略源和目标之间相隔的距离)、Inverse Linear(距离越远,力的大小呈线性减小)、Inverse Squared(力的大小按平方下降,类似现实世界重力);
Platform Effector 2D
属性描述
Rotational Offset 旋转偏移
One Way Use One Way:勾选后开启单向碰撞行为;
Use One Way Grouping:勾选此选项后,同一组的平台将共享同一个单向平台属性,可以方便批量设置;
Surface Arc:定义一个弧的角度,用于单向碰撞;
Sides Use Side Friction:勾选后开启平台两侧摩擦;
Use Side Bounce:勾选后开启平台两侧弹力;
Side Arc:和 Surface Arc 类似,但是作用于平台的侧面;
Surface Effector 2D
属性描述
Force Speed:沿表面保持的速度;
Speed Variation:随机加速度值,如果设置为负数则会随机减速;
Force Scale:调整施加力的比例,最好不要设为1,不然会抵消掉跳跃移动等力;
Options Use Contact Force:勾选后在表面和目标碰撞体之间的触点施力,可以使目标对象旋转;
Use Friction:勾选后开启摩擦力;
Use Bounce:勾选后开启弹力;
  • 25
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jc_caterpillar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值