UI跟随3D人物

UI跟随3D人物

  • UI跟随3D人物
  • 人物血条或者对话框
    • 一、方法一将人物坐标转换为2D的UI坐标
    • 二、方法二将画Canvas的Render Mode改为World Space方式

UI跟随3D人物

人物血条或者对话框

一、方法一将人物坐标转换为2D的UI坐标

UI_Follow脚本挂载到需要跟随的3D人物上
offset为偏移量
rectTransform为需要跟随的UI

UI普通创建无需调整Canvas的Render Mode模式,无需将UI放到3D人物下面

public class UI_Follow : MonoBehaviour {

    /// 
    /// 偏移量
    /// 
    public Vector2 offset;

    /// 
    /// 人物头顶标识
    /// 
    public RectTransform rectTransform;

    void Update()
    {
        FollowPlayer();
    }

    /// 
    /// UI跟随人物
    /// 
    void FollowPlayer()
    {
        if (rectTransform == null) return;
        Vector2 screenPos = Camera.main.WorldToScreenPoint(transform.position);
        rectTransform.position = screenPos + new Vector2(offset.x, offset.y);
        if (screenPos.x > Screen.width || screenPos.x < 0 || screenPos.y > Screen.height || screenPos.y < 0) rectTransform.gameObject.SetActive(false);
        else rectTransform.gameObject.SetActive(true);
	}
}

二、方法二将画Canvas的Render Mode改为World Space方式

将UI创建在3D人物下方

创建一个脚本在这个UI或者当前Canvas上,Update中写入LookA函数

// Update is called once per frame
	void Update () {
        transform.LookAt(Camera.main.transform);
	}

你可能感兴趣的:(数学相关,Unity,ui,3d,UI跟随人物,血条跟随)