unity UI 跟随3D物体移动

这篇具有很好参考价值的文章主要介绍了unity UI 跟随3D物体移动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

unity UI 跟随3D物体移动

 文章来源地址https://www.toymoban.com/news/detail-506356.html

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

public class UIFollow3DObj : MonoBehaviour
{
    [Header("跟随的物体")]
    public Transform targetTran;

    [Header("偏移值")]
    public Vector2 Offset;

    /// <summary>
    /// 
    /// </summary>
    RectTransform canvasTran, uiTran;

    void Start()
    {
        uiTran = transform.GetComponent<RectTransform>();
        canvasTran = transform.GetComponentInParent<Canvas>().GetComponent<RectTransform>();
    }

    private void Update()
    {
        if (targetTran != null)
        {
            if (isInFront())
            {
                Vector2 mScreenPos = Camera.main.WorldToScreenPoint(targetTran.transform.position);
                Vector2 mRectPos;
                RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasTran, mScreenPos, null, out mRectPos);
                uiTran.anchoredPosition = mRectPos + Offset;
                uiTran.localScale = Vector3.one;
            }
            else
            {
                uiTran.localScale = Vector3.zero;
            }


            //Vector2 mScreenPos = Camera.main.WorldToScreenPoint(targetTran.transform.position);
            //if (RectTransformUtility.ScreenPointToLocalPointInRectangle(uiTran.root.transform as RectTransform,
            // Camera.main.WorldToScreenPoint(targetTran.position), uiTran.root.GetComponent<Canvas>().worldCamera, out mScreenPos))
            //{
            //    uiTran.anchoredPosition = mScreenPos + Offset;

            //    //血条超出屏幕就不显示  
            //    if (mScreenPos.x > Screen.width / 2 || mScreenPos.x < -Screen.width / 2 || mScreenPos.y > Screen.height / 2 || mScreenPos.y < -Screen.height / 2)
            //    {
            //        uiTran.gameObject.SetActive(false);
            //    }
            //    else
            //    {
            //        uiTran.gameObject.SetActive(true);
            //    }
            //}
        }
    }

    //判定在摄像头前面
    public bool isInFront()
    {     
        Vector3 dir = (targetTran.position - Camera.main.transform.position).normalized;
        float dot = Vector3.Dot(Camera.main.transform.forward, dir);
        if (dot > 0)
            return true;
        else
            return false;
    }

}

到了这里,关于unity UI 跟随3D物体移动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity鼠标控制3D物体的移动、旋转、缩放

    1.使用协程 2.鼠标左键控制物体移动,鼠标碰到物体,物体颜色改变 1. 控制物体左右旋转,上下旋转 2. 控制摄像机以物体为中心旋转 脚本挂载到摄像机上 1. 基于物体本身的Transform的缩放 2. 基于摄像机的远近的缩放 脚本挂载到摄像机上

    2024年02月11日
    浏览(52)
  • Unity3d中关于物体穿透模型和物体移动的一些问题

    第一:可能是没有设置刚体和碰撞体; 第二种:一般是由于被穿透物体太过于薄弱,根本没有检测到碰撞的问题,这种情况可以把物体加厚。但偶尔是不能解决问题的,因为这种情况下是由于物体移动的速度过快导致的。 第三;关于物体自己动的问题,那是物体移动脚本和物

    2024年02月11日
    浏览(77)
  • Unity之UI、模型跟随鼠标移动(自适应屏幕分辨率、锚点、pivot中心点)

    UI跟随鼠标移动, 当我们修改屏幕分辨率、锚点、pivot等参数时会动态自适应并始终让ui的pivot中心点位置跟随鼠标位置。同时脚本中包含3d物体跟随ui位置和3d物体直接跟随鼠标位置移动 在说功能原理之前我们需要先了解屏幕坐标、Canvas自适应、锚点、中心的特性和之间的关系

    2024年02月04日
    浏览(64)
  • Unity3D 控制物体移动且自动旋转

    直接上代码(改脚本挂载到游戏物体上) 第三人称摄像机移动

    2024年02月15日
    浏览(83)
  • Unity Dotween插件物体、ui的移动 旋转 缩放效果

    Unity Dotween插件物体、ui的移动 旋转 缩放效果 #脚本应用命名空间 using DG.Tweening; ##让游戏物体平移 //参数一:要移动到的位置 //参数二:动画完成要多少秒 transform.DOMove(new Vector3(1,3, 8.08f),5.5f); ##让游戏物体旋转 //参数一:要旋转成的样子的坐标 //参数二:旋转动画多少秒完成 trans

    2024年02月01日
    浏览(51)
  • Unity UI不被3D物体遮挡

    UI Shader: 用该Shader创建一个材质,将该材质挂到不被模型遮挡的UI上。 TextMeshPro 设置: 修改TextMesh Pro/Shaders/TMP_SDF.shader 修改如下:

    2024年02月07日
    浏览(57)
  • unity中实现3D物体在UI前方

    在Unity中,如果你想要将3D物体显示在UI的前方,可以通过Canvas和RawImage来实现。以下是一些步骤: 创建Canvas: 在场景中创建一个Canvas对象。你可以在Hierarchy视图中右键点击,选择UI Canvas,或者在创建菜单中找到。Canvas是用来渲染UI元素的。 创建RawImage: 在Canvas中创建一个Ra

    2024年02月20日
    浏览(72)
  • Unity功能测试3D物体和UI的点击事件

    我们在功能开发中 当UI和3D物体在一起的时候点击事件通常会有这么几种情况 1、UI和3D物体同时响应事件 这种情况很常见,如果是故意有次功能需求那将不需要改动.实现代码 3D物体上挂载 UI上挂载 这里面ExecuteAll这个方法也可以处理同理响应事件的问题(已注释) 2、UI和3D物体

    2024年02月05日
    浏览(63)
  • Unity3D实现鼠标悬浮UI或物体上显示文字信息

    Unity工具 大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 本篇文章实现一个鼠标悬浮在ui或者物体上显示文字的功能 unity鼠标悬浮ui显示文字 鼠标进入UI执行的 鼠标离开UI执行的 鼠标在ui里滑动执行的 1. 2. 搭建比较简单,各位顺便搭建吧。

    2024年02月04日
    浏览(95)
  • Unity 物体的运动之跟随鼠标

            你想让鼠标点击哪里,你的运动的对象就运动到哪里吗? Please follow me ! 首先,你要先添加一个Plane ,以及你的围墙,你的移动的物体   想要实现跟随鼠标移动,我们先创建一个脚本 先简单的分析一下代码: 开始的时候应该先创建一个空物体,将该空物体拉进去脚

    2024年02月12日
    浏览(86)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包