如何获取Unity AR中放置于现实世界的GameObject的位置旋转缩放详情?
如何在Unity AR中获取放置对象的位置、旋转、缩放并转为文本格式
当然可以实现。在Unity中,放置到现实世界的AR游戏对象本质上还是普通的GameObject,你可以直接访问它的Transform组件来获取位置、旋转、缩放数据,再将这些数值格式化为文本。
获取并格式化位置信息
位置数据存储在Transform.position中,这是一个Vector3类型的变量,包含x、y、z三个轴的数值。你可以直接提取每个轴的值,再拼接成文本:
// 假设你已经获取到了放置后的目标GameObject GameObject arObject = /* 你的AR对象引用 */; Vector3 pos = arObject.transform.position; string positionText = $"位置:X={pos.x:F2}, Y={pos.y:F2}, Z={pos.z:F2}";
这里用F2格式化保留两位小数,你可以根据需求调整精度。
获取并格式化旋转信息
旋转数据通常用Transform.eulerAngles来获取(欧拉角,更直观),同样是Vector3类型,对应三个轴的旋转角度:
Vector3 rot = arObject.transform.eulerAngles; string rotationText = $"旋转:X={rot.x:F1}, Y={rot.y:F1}, Z={rot.z:F1}";
注意:Unity中旋转也可以用四元数Transform.rotation,但欧拉角更适合转为可读文本。
获取并格式化缩放信息
缩放数据在Transform.localScale中(AR场景中一般使用局部缩放),同样提取三个轴的值:
Vector3 scale = arObject.transform.localScale; string scaleText = $"缩放:X={scale.x:F2}, Y={scale.y:F2}, Z={scale.z:F2}";
整合所有信息
你可以把这三部分文本合并成一个完整的字符串,用于UI显示、日志输出或者保存:
string allTransformText = $"{positionText}\n{rotationText}\n{scaleText}"; // 示例:输出到控制台 Debug.Log(allTransformText); // 示例:显示在UI文本组件上 // GetComponent<Text>().text = allTransformText;
注意事项
- 确保你已经正确获取到AR放置后的
GameObject引用,比如在AR Foundation的ARRaycastManager回调中拿到生成的对象。 - 位置数值是基于Unity世界坐标系的,对应AR会话中的现实世界空间定位。
内容的提问来源于stack exchange,提问作者P D
相关产品推荐
相关产品推荐

