Unity Project Settings - Physics 2D设置说明

以下是 Unity Project Settings 中 Physics 2D 设置的完整汇总说明表格,适用于 2D 游戏开发:

设置分类具体设置项功能说明推荐值/注意事项
基础参数Gravity2D世界重力加速度默认 (0, -9.81)
平台游戏可设为 (0, -15)
Default Material默认2D物理材质控制摩擦力和弹性
Velocity Iterations速度求解迭代次数默认8,复杂场景增至12-15
Position Iterations位置求解迭代次数默认3,精确碰撞可增至5-8
碰撞检测Layer Collision Matrix2D层碰撞矩阵控制哪些层可以相互碰撞
Raycasts Hit Triggers射线检测触发器默认开启,按需调整
Queries Start In Colliders查询始于碰撞体内默认关闭,防止自碰撞
Auto Sync Transforms自动同步变换默认关闭,开启影响性能
物理材质Default Elasticity默认弹性系数0-1,0无反弹,1完全反弹
Default Friction默认摩擦系数0-1,0无摩擦,1最大摩擦
性能优化Always Show Colliders始终显示碰撞体调试时开启,默认关闭
Collider Awake On Load加载时唤醒碰撞体默认开启,场景加载时激活
Collider Asleep On Start开始时休眠碰撞体默认关闭,按需开启
Auto Simulation自动模拟物理默认开启,可手动控制
高级设置Velocity Threshold速度休眠阈值默认0.1,低于此值休眠
Max Linear Correction最大线性修正默认0.2,解决穿透问题
Max Angular Correction最大角度修正默认0.1,解决旋转穿透
Baumgarte Scale穿透修正系数默认0.2,增大可减少穿透
Baumgarte TOI ScaleTOI穿透修正系数默认0.75,连续碰撞用
Time To Sleep休眠等待时间默认0.5秒,静止后休眠
Linear Sleep Tolerance线性休眠容差默认0.005,可增大优化
Angular Sleep Tolerance角度休眠容差默认0.005,可增大优化

关键设置详细说明

1. 迭代次数配置

在这里插入图片描述

2.物理材质参数

参数作用典型值效果示例
Friction表面摩擦0.3-0.6冰面=0.05,橡胶=0.8
Bounciness弹性0-1篮球=0.8,铅球=0.1
Friction Combine摩擦组合Average两物体摩擦系数计算方式
Bounce Combine弹性组合Maximum两物体弹性系数计算方式

3. 休眠优化参数

// 代码控制休眠
Rigidbody2D rb = GetComponent<Rigidbody2D>();
rb.Sleep(); // 强制休眠
rb.WakeUp(); // 唤醒

最佳实践配置方案

平台游戏配置

  1. Gravity: (0, -15)
  2. Velocity Iterations: 10
  3. Position Iterations: 5
  4. Default Elasticity: 0.3 (角色轻微反弹)

物理谜题游戏配置

  1. Max Linear Correction: 0.3
  2. Baumgarte Scale: 0.3
  3. Velocity Iterations: 15
  4. Time To Sleep: 1.0 (延迟休眠)

常见问题解决

问题:2D物体穿透

解决方案

  1. 增加 Position Iterations (5-8)
  2. 调整 Max Linear Correction (0.2-0.5)
  3. 检查碰撞体大小是否合理
  4. 使用 Rigidbody2D.interpolation

问题:性能低下

优化方案

  1. 降低 Velocity Iterations (最低6)
  2. 增加 Linear Sleep Tolerance (0.01-0.05)
  3. 使用 Collider2D.usedByEffector 禁用不必要碰撞
  4. 分区域禁用物理模拟:
Physics2D.simulationMode = SimulationMode2D.Script;

问题:反弹不稳定

调整方法

  1. 统一物理材质 Bounce CombineAverage
  2. 增加 Velocity Iterations
  3. 限制最大反弹速度:
void OnCollisionEnter2D(Collision2D col)
{
    if(col.relativeVelocity.magnitude > 10)
        col.rigidbody.velocity *= 0.8f;
}

特殊组件设置

2D组件关键参数优化建议
Rigidbody2DgravityScale/collisionDetection重力比例按需调整
Collider2Doffset/isTrigger简单形状性能更好
Joint2DbreakForce/dampingRatio适当设置断裂力
Effector2DuseColliderMask精确控制影响层

调试技巧

1.可视化碰撞框:


csharp
void OnDrawGizmos()
{
    Gizmos.color = Color.green;
    Gizmos.DrawWireCube(collider.bounds.center, collider.bounds.size);
}

2.实时修改参数:


csharp
#if UNITY_EDITOR
[Range(0.1f, 20f)] public float gravityScale = 1f;

void Update()
{
    Physics2D.gravity = new Vector2(0, -9.81f * gravityScale);
}
#endif

3.性能分析:


csharp
void Start()
{
    Physics2D.callbacksOnDisable = true; // 记录禁用时的碰撞
}

通过合理配置Physics 2D参数,可以打造出既真实又高效的2D物理效果。建议根据游戏类型在开发早期确定基础参数,并在不同设备上进行充分测试验证。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值