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
相关产品推荐
相关产品推荐

