坐标转换
比如做一个让NGUI上的血槽UI跟随3D世界的某个物体,这个时候需要用到坐标的转换,即将3D世界的某一点坐标转换成对应的NGUI坐标系中的点
using UnityEngine;
using System.Collections;
public class BloodBar : MonoBehaviour {
//声明血条
public GameObject bloodUI;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void LateUpdate()
{
//血条在每一帧渲染完了之后实时的更新血条位置
//这里的核心原理就是,先将角色头顶1米处的坐标转换为屏幕坐标,然后将这个屏幕坐标转换为UI相机的世界坐标,然后将这个坐标实时赋值给UI,视觉上就达到了跟随的效果。
//我们把血条设置在我们角色头顶1米处并映射到屏幕上
Vector3 bloodPos = Camera.main.WorldToScreenPoint(new Vector3(this.transform.position.x, this.transform.position.y + 0.7f, this.transform.position.z));
//然后把这个转换为NGUI摄像机坐标
bloodUI.transform.position = UICamera.FindCameraForLayer(bloodUI.layer).GetComponent<Camera>().ScreenToWorldPoint(new Vector3(bloodPos.x, bloodPos.y, 1));
}
}