首页 > 解决方案 > 如何在 c# 中获取 3d 对象的任何位置坐标,统一

问题描述

所以,我有一个 3d 对象,当我单击 3d 对象中的任何位置时,我试图获取 x、y、z 位置,但我不知道如何。

例如,如果我要单击 3d 对象的中间,它将给我坐标 (0,50,0)。如果我点击左上角,它会说(0,0,0)。

编辑:当我单击我的 3d 对象上相对于对象枢轴点的任意位置时,我想获取坐标

标签: c#unity3dcoordinatesclicking

解决方案


您可以执行以下操作(假设您的对象已MeshCollider附加 - 或任何其他对象,Collider但当然您会在对撞机上而不是网格本身上获得点)

var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(ray, out var hit))
{
    var worldPoint = hit.point;
    var relativePoint = hit.transform.InverseTransformPoint(worldPoint);

    Debug.Log($"You have hit object {hit.gameObject} at position {relativePoint.ToString("G9")}");
}


推荐阅读