【发布时间】:2015-12-21 12:42:49
【问题描述】:
我创造了一个统一的场景。我将相机和 3d 统一立方体对象添加到场景中。要将对象移动到鼠标单击位置,我添加了光线投射并且它可以工作。
但我想使用我的模型。我有一个obj 和mtl 文件。我将它们复制到Assets 文件夹。我使用下面的代码。对象移动但不准确我的点击位置。
Plane plane = new Plane(Camera.main.transform.forward, transform.position);
pos = Input.mousePosition;
Ray ray = Camera.main.ScreenPointToRay(pos);
float dist;
if (plane.Raycast(ray, out dist))
{
Vector3 v = ray.GetPoint(dist);
objectPos = v;
}
transform.position = objectPos;
模型的原点不是 (0,0,0)。我从一个大的 3d 模型中剪下这个对象。
我尝试转到(Screen.width/2, Screen.Height/2, 0.0f),结果如下
编辑 2
【问题讨论】:
-
也许您应该创建图像来显示期望行为和实际行为之间的差异。
-
@AntiHeadshot 我添加了一张图片。
-
平面和物体在同一个Z平面上吗?你有一个透视相机,所以如果物体比平面更近,物体看起来会向外偏移,如果平面更近,那么物体看起来更靠近中心,那么它应该。
-
物体和平面的z水平相同。因为我在运行时使用对象的
transfrom.posiiton创建平面
标签: unity3d 3d transform raycasting