untiy 连接两个UI或一段固定一段跟随鼠标移动的线段

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

注意,仅适用于UI,且Canvas必须是Camera模式,不能用在3D物体上,3D物体请使用LineRenender

先创建一个图片,将锚点固定在左边
untiy 连接两个UI或一段固定一段跟随鼠标移动的线段,unityUI,unity
然后在脚本中添加如下内容文章来源地址https://www.toymoban.com/news/detail-636353.html

		public RectTransform startObj;//起点物体
		public RectTransform endObj;//终点物体
        public Camera camera;//Canvas的相机
        
        private void CalcuateLine()//计算线的宽度和角度
        {
            if (startObj == null) return;
            //设置长度和角度
            Vector2 startPosition = Vector2.zero;
            Vector2 endPosition = Vector2.zero;
            //计算起点的世界坐标
            startPosition = RectTransformUtility. WorldToScreenPoint(camera,startObj.position);
            //计算终点的世界坐标
            if (endObj != null)//如果有结束物体,以结束物体为终点
            {
                endPosition = RectTransformUtility.WorldToScreenPoint(camera, endObj.position);
            }
            else//如果没有结束物体,以鼠标位置为终点
            {
                endPosition = Input.mousePosition;
            }
            //计算长度
            float dis = Vector2.Distance(startPosition,endPosition);
            //设置长度
            rectTransform.sizeDelta = new Vector2(dis,rectTransform.rect.height); 
            //计算角度
            Vector3 dir = endPosition - startPosition;
            float angle = Vector3.Angle(Vector3.right, dir);
            Vector3 cross = Vector3.Cross(Vector3.right, dir);
            float dirF = cross.z > 0 ? 1 : -1;
            angle = angle * dirF;
            //设置角度
            rectTransform.localEulerAngles = new Vector3(0,0,angle);

            //设置起点位置
            Vector2 startLocalPostion = Vector2.zero;
            RectTransformUtility.ScreenPointToLocalPointInRectangle(contentRectTransform, startPosition,camera,out startLocalPostion);
            rectTransform.localPosition = startLocalPostion;
        }

到了这里,关于untiy 连接两个UI或一段固定一段跟随鼠标移动的线段的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 纯css实现3D鼠标跟随倾斜

    老规矩先上图 为什么今天会想起来整这个呢?这是因为和我朋友吵架, 就是关于这个效果的,就是这个 卡片懸停毛玻璃效果, 我朋友认为纯css也能写, 我则坦言他就是在放狗屁,这种跟随鼠标的3D效果要怎么可能能用纯css写, 然后吵着吵着发现,欸,好像真能用css写哦,我以前还写过这

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

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

    2024年02月12日
    浏览(85)
  • unity摄像机跟随鼠标旋转

     float vertical = Input.GetAxis(\\\"Mouse X\\\") float horizontal = Input.GetAxis(\\\"Mouse Y\\\") 第二种 通过 计算坐标时只需要通过 Quaternion.Euler 来取得旋转四元数,以玩家为原点衍生一条(0,0,-1)的向量并乘上四元数以旋转至 Player 指向摄像机的方向,最后乘上 Distance ,即可得到摄像机相对玩家的偏移

    2024年02月11日
    浏览(67)
  • 图片跟随鼠标移动效果的抖动问题

    图片跟随鼠标移动效果的实现思路: 触发mousemove事件响应时,通过e.offsetX,e.offsetY获取到当前鼠标的位置。再修改图片的css样式中的top, left属性(图片采用绝对定位)。 代码如下: 分析问题原因 offset是相对于事件源而言的,即,鼠标在哪个元素上移动,事件的offset属性就是

    2024年02月09日
    浏览(78)
  • vue中跟随鼠标移动和边界处理

    补充前端跟坐标有关的知识点 1.pageX和pageY是整个文档开始计算的坐标,  红色表示pageX和pageY 2.offsetX和offsetY是一个鼠标在一个元素内的坐标, 蓝色表示offsetX和offsetY 3.clientX和clientY是当前屏幕可视化局域计算的坐标,  当文档不向下滚动时,红色也可以表示clientX和clientY 分析得出

    2024年02月16日
    浏览(53)
  • Threejs入门之三:让物体跟随鼠标动起来

    上一节我们创建了一个三维的立方体,将其放在了浏览器窗口中,但是目前来讲它只是一个静态的图片,我们并不能通过鼠标控制其旋转、缩放和移动,这一节我们来实现用鼠标控制物体的运动。 首先我们要了解一个概念,在三维场景中,我们要控制物体旋转,实际上不是物

    2024年02月11日
    浏览(59)
  • CSS实现鼠标跟随 3D 旋转效果,让交互活起来

    一淘模板(56admin.com)给大家介绍一下如何使用CSS实现有意思的鼠标跟随 3D 旋转效果,让交互更加生动,希望对大家有所帮助! 今天,群友问了这样一个问题,如下所示的鼠标跟随交互效果,如何实现: 简单分析一下,这个交互效果主要有两个核心: 借助了 CSS 3D 的能力 元

    2024年02月10日
    浏览(93)
  • html+css+js实现小红点跟随鼠标移动

    2024年02月06日
    浏览(89)
  • Unity【角色/摄像机移动控制】【2.角色跟随鼠标转向】

    本章代码实现基于本系列的【1.角色移动】 在前面的基础上,我们在PlayerController脚本中添加如下函数,随后在update方法中调用即可: 其中mouseSensitivity是前面自定义的一个float变量,用来调节对鼠标转向速度,至此,当我们转动鼠标,角色也会跟着转动

    2024年02月22日
    浏览(57)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包