坐标转换

比如做一个让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));
    }
}

results matching ""

    No results matching ""