Unity新手求助:如何让液体模型适配非均匀杯形容器?
解决Unity液体贴合杯形容器的方案
方法一:缩放+碰撞检测适配X/Z尺寸(适配现有圆柱模型,兼容倒水脚本)
- 先对齐初始位置:将液体圆柱的底部与杯子内部底部对齐,直接在Scene视图拖动或修改Transform的Position,让圆柱Y坐标等于杯子内壁底部的Y值,解决悬浮问题。
- 适配X/Z方向:
- 规则杯型(圆柱杯):测量杯子内壁半径,直接调整液体圆柱的Scale的X、Z值,让圆柱半径与杯子内壁半径一致。
- 不规则杯型:用简单代码自动贴合,给杯子添加Mesh Collider(勾选Convex),给液体圆柱添加Capsule/Box Collider,然后挂以下脚本:
using UnityEngine; public class LiquidFitContainer : MonoBehaviour { public Transform cupTransform; private Collider cupCollider; private Collider liquidCollider; private Vector3 initialScale; private float maxScaleXZ = 2f; // 限制最大缩放,防止溢出 void Start() { cupCollider = cupTransform.GetComponent<Collider>(); liquidCollider = GetComponent<Collider>(); initialScale = transform.localScale; // 强制对齐杯子底部 transform.position = new Vector3(cupTransform.position.x, cupCollider.bounds.min.y, cupTransform.position.z); } void Update() { // 仅在液体Y轴扩展时执行适配 if (transform.localScale.y > 0.01f) { FitToContainer(); } } void FitToContainer() { float currentScaleXZ = initialScale.x; bool isColliding = false; // 逐步放大X/Z直到触碰杯子内壁 while (!isColliding && currentScaleXZ < maxScaleXZ) { transform.localScale = new Vector3(currentScaleXZ, transform.localScale.y, currentScaleXZ); isColliding = Physics.CheckBox(liquidCollider.bounds.center, liquidCollider.bounds.extents, transform.rotation, 1 << cupTransform.gameObject.layer); currentScaleXZ += 0.01f; } // 回退到碰撞前的缩放值 transform.localScale = new Vector3(currentScaleXZ - 0.01f, transform.localScale.y, currentScaleXZ - 0.01f); } }
- 配置:将杯子的Transform拖入脚本的
cupTransform字段,确保杯子和液体在同一Layer,或调整代码中的Layer掩码。该逻辑与你现有Y轴扩展的倒水脚本无冲突。
方法二:Mesh变形(无代码,适合规则杯型)
- 复制杯子的Mesh:在Project视图右键杯子的Mesh资源选择复制,重命名为
LiquidMesh。 - 调整Mesh形状:打开
LiquidMesh的Inspector面板,将Mesh的Y轴Scale设为极小值(比如0.01),作为液体初始状态。 - 替换液体Mesh:将
LiquidMesh赋值给液体对象的Mesh Filter,之后你的倒水脚本只需修改液体的localScale.y,液体形状会完全贴合杯子内壁。
方法三:免费插件快速实现
- 前往Unity Asset Store搜索免费液体模拟插件(如「Simple Liquid」「Basic Liquid Simulator」),这类插件自带容器贴合功能,只需将杯子设为容器、液体设为内容物,即可自动适配边界,无需大量编码。
注意事项
- 若之前的自定义代码无效,优先检查:是否给杯子/液体添加了Collider、Layer是否设置正确、缩放逻辑是否与倒水脚本冲突。
内容的提问来源于stack exchange,提问作者Skyler Peters
相关产品推荐
相关产品推荐

