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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 08:12:51