You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Box Collider 2D底部锚定的Y偏移量计算公式求解

解决Box Collider 2D底部锚定的数学公式

要实现Box Collider 2D底部锚定、仅向上扩展的需求,核心是让碰撞器底部的局部坐标保持固定。先明确Box Collider 2D的几何关系:

碰撞器底部的局部y坐标 = offset.y - (size.y / 2)

因为要让底部坐标固定,设这个固定值为常数K,可以推导出偏移量的公式:
offset.y = K + (size.y / 2)

代入已知参数求K

已知两组对应值:

  • 当size.y = 1时,offset.y = 0.4842
  • 当size.y = 0.1时,offset.y ≈ 0.034

把第一组值代入公式:
0.4842 = K + 0.5
计算得K = 0.4842 - 0.5 = -0.0158

验证公式

把size.y = 0.1代入推导后的公式:
offset.y = -0.0158 + 0.05 = 0.0342
和需求的≈0.034完全匹配,符合预期。

实际代码实现

在Unity中修改碰撞器尺寸后,用以下代码更新偏移量即可:

BoxCollider2D boxCol = GetComponent<BoxCollider2D>();
// 仅更新Y轴偏移,保持X轴不变
boxCol.offset = new Vector2(boxCol.offset.x, -0.0158f + boxCol.size.y / 2f);

关于对象缩放的说明

你的对象缩放为(4,4,1),由于Box Collider 2D的offset和size都是基于局部空间的参数,缩放会同步作用于两者,因此上述公式不需要额外调整,就能保证碰撞器底部在世界空间的位置固定(只要对象的世界位置不改变)。

内容的提问来源于stack exchange,提问作者flask

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 16:24:59