Unity中如何获取一个GameObject相对于另一个GameObject的位置信息?
Unity中获取GameObject相对位置的实现方法
完全可以实现你要的需求,下面分场景给出具体实现方式:
1. 基于桌子边界盒的相对位置计算
你期望的(15, 55, 10)是花瓶相对于桌子物理边界的位置(桌子尺寸30,50,20的中间上方5单位),核心是通过边界盒(Bounds)获取桌子的物理范围,再计算花瓶的相对位置:
public GameObject table; public GameObject vase; public Text displayText; // 按钮触发的方法 public void GetVaseRelativePosition() { Renderer tableRenderer = table.GetComponent<Renderer>(); if (tableRenderer == null || vase == null) return; // 获取桌子的物理边界盒 Bounds tableBounds = tableRenderer.bounds; // 计算花瓶相对于桌子边界盒左下角的位置 Vector3 relativePos = vase.transform.position - tableBounds.min; // 格式化输出,匹配你期望的数值格式 displayText.text = $"花瓶相对桌子位置:({relativePos.x:F1}, {relativePos.y:F1}, {relativePos.z:F1})"; }
2. 绑定按钮触发逻辑
在Unity编辑器中:
- 创建一个UI按钮
- 将上述脚本挂载到任意GameObject上
- 选中按钮,在
OnClick事件列表中添加该脚本所在对象,选择GetVaseRelativePosition方法
点击按钮即可实时获取花瓶相对于桌子的位置,完全符合你给出的示例场景(输出(15, 55, 10))。
注意:如果你的桌子模型轴心与物理边界不匹配,可根据需求修改参考点(比如用边界盒中心
tableBounds.center),只需要调整tableBounds.min为对应的位置即可。
内容的提问来源于stack exchange,提问作者P D
相关产品推荐
相关产品推荐

