UI跟随3D人物

UI跟随3D人物

人物血条或者对话框

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

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

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

public class UI_Follow : MonoBehaviour {

    /// <summary>
    /// 偏移量
    /// </summary>
    public Vector2 offset;

    /// <summary>
    /// 人物头顶标识
    /// </summary>
    public RectTransform rectTransform;

    void Update()
    {
        FollowPlayer();
    }

    /// <summary>
    /// UI跟随人物
    /// </summary>
    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);
	}
发布了62 篇原创文章 · 获赞 5 · 访问量 3914

猜你喜欢

转载自blog.csdn.net/qq_42194657/article/details/103618243