繁体   English   中英

我如何在 c# 中的 3d 对象上的任何位置获取坐标,unity

[英]how do I get coordinates anywhere on a 3d object in c#, unity

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

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

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

您可以执行以下操作(假设您的对象附加了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")}");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM