Unity3D世界坐标转成UI坐标
2017-02-23 18:25
435 查看
Unity3D
// 世界坐标转成UI坐标
// UI以UICamera 的形式存在
public bool WorldToUI(Vector3 world, GameObject parent, out Vector3 pos)
{
Vector3 in_main_vp = MainCamera.WorldToViewportPoint(world);
if (in_main_vp.z < 0)
{
pos = Vector3.zero;
return false;
}
in_main_vp.x -= 0.5f;
in_main_vp.y -= 0.5f;
Vector3 in_screen = new Vector3(UICamera.pixelWidth * in_main_vp.x, UICamera.pixelHeight * in_main_vp.y, 0);
pos = in_screen;
CanvasScaler cs = RootUI.GetComponent<CanvasScaler>();
pos.x /= (Screen.width / cs.referenceResolution.x);
pos.y /= (Screen.height / cs.referenceResolution.y);
return true;
}
// 最后赋值
transform.localPosition = new Vector3(pt_in_ui.x, pt_in_ui.y, 0);
// 世界坐标转成UI坐标
// UI以UICamera 的形式存在
public bool WorldToUI(Vector3 world, GameObject parent, out Vector3 pos)
{
Vector3 in_main_vp = MainCamera.WorldToViewportPoint(world);
if (in_main_vp.z < 0)
{
pos = Vector3.zero;
return false;
}
in_main_vp.x -= 0.5f;
in_main_vp.y -= 0.5f;
Vector3 in_screen = new Vector3(UICamera.pixelWidth * in_main_vp.x, UICamera.pixelHeight * in_main_vp.y, 0);
pos = in_screen;
CanvasScaler cs = RootUI.GetComponent<CanvasScaler>();
pos.x /= (Screen.width / cs.referenceResolution.x);
pos.y /= (Screen.height / cs.referenceResolution.y);
return true;
}
// 最后赋值
transform.localPosition = new Vector3(pt_in_ui.x, pt_in_ui.y, 0);
相关文章推荐
- Unity3D【脚本】把一个ui物体,对准世界坐标中的物体,可以实现例如血条等
- Unity3D世界的坐标与小地图UI上对应坐标之间的转换
- Unity3D 世界坐标上一个点对应UI上一个点
- unity3d的世界坐标转化成屏幕坐标
- Unity3D之获取BoxCollider八个点的世界坐标
- Unity3D中世界坐标转换到NGUI坐标
- 创建一个slider UI,并将其呈现在世界坐标作为血条
- Unity3D中世界坐标转换到NGUI世界坐标
- Unity3D的世界坐标转化成屏幕坐标
- Unity3D中世界坐标转换到NGUI坐标
- unity3d uGUI中世界坐标与屏幕坐标实际运用
- Unity3D - Shader - 模型、世界、观察、裁剪空间坐标转换
- [unity基础教程]Unity3D中世界坐标转如何化成屏幕坐标?
- Unity3D中世界坐标转换到NGUI坐标
- unity3d世界坐标与ngui坐标
- [unity3d]屏幕坐标跟世界坐标的转换
- Unity3D中世界坐标转换到NGUI坐标
- [unity3d]屏幕坐标跟世界坐标的转换
- unity3d ugui中如何获取ui控件位置?或者说如何将ugui中ui控件(组件)的坐标转化为屏幕坐标或canvas坐标(大坑)?
- UGUI 世界坐标转屏幕坐标转UI坐标