c# - 如何在 c# 中获取 3d 对象的任何位置坐标,统一
问题描述
所以,我有一个 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")}");
}
看
推荐阅读
- javascript - 你能限制 MDX 页面渲染的 React 组件吗?
- pytorch - RuntimeError: 预期隐藏 [0] 大小 (2, 1, 100),得到 (1, 1, 100)
- google-sheets - 如何停止/冻结/暂停波动的 RAND / RANDBETWEEN / RANDARRAY?
- django - Django Model @property 重复查询
- compiler-construction - 机器语言支持或不支持间接跳转时的代码生成器
- python - Selenium(PYTHON) 点击元素直到不再可点击
- google-cloud-platform - apache_beam.io.ReadFromBigQuery 在 Dataflow 管道模板中动态传递参数
- python - 如何让 Django 将 ValidationError 提升为 Popup?
- numpy - 对数损失和交叉熵损失的结果不同
- ruby-on-rails - 如果设置了所有参数,Rails 创建状态为已发布的记录