首页 > Unity3D专栏 > 【Unity3D】 UGUI界面跟随3D物体
2018
03-23

【Unity3D】 UGUI界面跟随3D物体

UGUI界面跟随3D物体,并且判断物体是否在镜头前。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour {
    public RectTransform UGUIPanel;
    public int SetX;
    public int SetY;
    void Update()
    {
        Vector2 v2 = Camera.main.WorldToScreenPoint(this.gameObject.transform.position);
        UGUIPanel.anchoredPosition = v2 + new Vector2(SetX, SetY);

        if (IsInView(this.gameObject.transform.position))
        {
            UGUIPanel.gameObject.SetActive(true);
        }
        else
        {
            UGUIPanel.gameObject.SetActive(false);
        }  
    }
    public bool IsInView(Vector3 worldPos)
    {
        Transform camTransform = Camera.main.transform;
        Vector2 viewPos = Camera.main.WorldToViewportPoint(worldPos);
        Vector3 dir = (worldPos - camTransform.position).normalized;
        float dot = Vector3.Dot(camTransform.forward, dir);     //判断物体是否在相机前面  

        if (dot > 0 && viewPos.x >= 0 && viewPos.x <= 1 && viewPos.y >= 0 && viewPos.y <= 1)
            return true;
        else
            return false;
    } 
}

 



虚拟世界提醒您:如果您觉得本文不错,快快将这篇文章分享出去吧 ,感谢您的支持和关注,谢谢!
最后编辑:
作者:虚拟世界
专注互联网技术及资讯 技术研究中心|有相关Unity3D问题或者作事宜请联系我哦!
捐 赠如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝或者微信直接向我捐款,在此非常感谢您对虚拟世界的捐赠。

留下一个回复

你的email不会被公开。