Unity 2d 与3d坐标如何互相转换
发表于2017-02-17
一些游戏场景需要将人物当前的位置通过2d 与3d坐标互相转换得到,但考虑到有些人还不知道如何互转转换,为了帮助大家,下面就给大家介绍下Unity 2d 与3d坐标互相转换的方法,一起来看看吧。
// 根据3d的主角坐标,获得主角血条的坐标 (通过视窗坐标转换)
1 2 | Vector3 pos = cam.WorldToViewportPoint(Boy.position); // 将主角的3d坐标转换成对象屏幕的视窗坐标 UI.transform.position = UIcam.ViewportToWorldPoint(pos); // 根据视窗坐标获得UI血条在3d的位置 |
// 根据3d的主角坐标,获得主角血条的坐标 (通过屏幕坐标转换)
1 2 3 | screenpos = _cameraScene.WorldToScreenPoint (target); viewpos = _cameraUI.ScreenToWorldPoint ( new Vector3 (screenpos.x,screenpos.y,_cameraUI.nearClipPlane)); viewpos.z = 0; |
// 通过2d的坐标加上z轴的深度,获得该2d坐标在3d上的位置
1 2 3 4 5 | public static Vector3 PointVec2ToVec3(Vector2 vec2, float z){ Vector3 world = new Vector3 (vec2.x / Screen.width, vec2.y / Screen.height, z); Vector3 world1 = Camera.main.ViewportToWorldPoint ( new Vector3(world.x, world.y, world.z)); // 屏幕坐标转换成场景坐标 return world1; } |