如何解决我如何在 c# 中的 3d 对象上的任何位置获取坐标,unity
所以,我有一个 3d 对象,当我单击 3d 对象内的任意位置时,我试图获取 x、y、z 位置,但我不知道如何。
例如,如果我要单击 3d 对象的中间,它会给我坐标 (0,50,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")}");
}
见
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。