Unity点击生成节点连线

news2024/12/24 2:31:30

Unity点击生成节点连线

  1. 效果
    在这里插入图片描述
    2.主要代码
    Test_Line 控制类
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class Test_Line : MonoBehaviour
{
    public GameObject qiu_prefab;
    public List<GameObject> spheres;
    public bool istrue = true;
    public GameObject qr_im;
    private void Update()
    {
        if (Input.GetMouseButtonDown(0) && istrue && !EventSystem.current.IsPointerOverGameObject())
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                GameObject obj = hit.collider.gameObject;
                if (spheres.Count > 2)
                {
                    if (obj == spheres[0])
                    {
                        qr_im.SetActive(true);
                        Debug.Log("是否闭合");
                    }
                }
                if (obj.layer != LayerMask.NameToLayer("JieDian"))
                {
                    GameObject jiedian = Instantiate(qiu_prefab, hit.point, new Quaternion());
                    spheres.Add(jiedian);
                    if (spheres.Count > 1)
                    {
                        spheres[spheres.Count - 2].GetComponent<DragObjMove>().nextObj = spheres[spheres.Count - 1];
                        spheres[spheres.Count - 2].GetComponent<DragObjMove>().StartTest();
                    }
                }
            }
        }
    }
    public void Bihe()
    {
        istrue = false;
        spheres[spheres.Count - 1].GetComponent<DragObjMove>().nextObj = spheres[0];
        spheres[spheres.Count - 1].GetComponent<DragObjMove>().StartTest();
    }
}

DragObjMove节点控制类

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

public class DragObjMove : MonoBehaviour
{
    private Vector3 offset;
    public GameObject nextObj;

    private LineRenderer lineRenderer;
    private Transform startPoint;
    private Transform endPoint;
    public Material[] materials;
    public void StartTest()
    {
        if (nextObj != null)
        {
            startPoint = transform;
            endPoint = nextObj.transform;
            lineRenderer = GetComponent<LineRenderer>();
            lineRenderer.positionCount = 2;
        }
    }
    private void Update()
    {
        // 确保起点和终点已赋值且LineRenderer组件存在
        if (nextObj != null && lineRenderer != null)
        {
            lineRenderer.SetPosition(0, startPoint.position); // 设置线段的起始位置
            lineRenderer.SetPosition(1, endPoint.position);   // 设置线段的结束位置
        }
    }

    private void OnMouseEnter()
    {
        transform.GetComponent<MeshRenderer>().material = materials[1];

    }
    private void OnMouseDown()
    {
        offset = transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Camera.main.WorldToScreenPoint(transform.position).z));
    }
    private void OnMouseDrag()
    {
        Vector3 newPosition = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Camera.main.WorldToScreenPoint(transform.position).z)) + offset;
        transform.position = newPosition;
    }
    private void OnMouseExit()
    {
        transform.GetComponent<MeshRenderer>().material = materials[0];
    }
}

  1. 资源包下载链接:下载地址
  2. 补充:导入资源包后,需将节点小球预制体的Layer改成“JieDian”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1937143.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于 CNN(二维卷积Conv2D)+LSTM 实现股票多变量时间序列预测(PyTorch版)

前言 系列专栏:【深度学习&#xff1a;算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域&#xff0c;讨论了各种复杂的深度神经网络思想&#xff0c;如卷积神经网络、循环神经网络、生成对…

android13读取cpu频率,并调整频率

总纲 android13 rom 开发总纲说明 目录 1.前言 2.频率类型 3.获取cpu可以调节的频率 4.获取当前频率 5.设置频率 6.最后我们写个脚本,来实现,可以通过参数获取所有cpu的频率,以及设置最大最小频率 6.1 获取cpu频率 6.2 设置最大cpu频率 6.3 设置最小 7.彩蛋 1.前…

敏捷开发笔记(第12章节)--接口隔离原则(ISP)

目录 1&#xff1a;PDF上传链接 12.1&#xff1a;接口污染 12.2&#xff1a;分离客户就是分离接口 12.3&#xff1a;接口隔离原则&#xff08;ISP&#xff09; 12.4&#xff1a;类接口与对象接口 12.4.1&#xff1a;使用委托分离接口 12.4.2&#xff1a;使用多重继承分离接口 …

基于JAVA+SpringBoot+Vue+uniApp的校园日常作品商品分享小程序

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、SpringCloud、Layui、Echarts图表、Nodejs、爬…

为什么精酿人士选择FENDI CLUB啤酒

FENDI CLUB啤酒作为云仓酒庄平台的精酿啤酒自有品牌&#xff0c;平台提供以技术咨询与服务为核心的全产业链精酿产品解决方案&#xff0c;帮助啤酒代理商提高产品质量&#xff0c;树立优质品牌&#xff0c;推广精酿文化&#xff0c;促进精酿发展&#xff0c;力争成为中国本土品…

Leetcode3208. 交替组 II

Every day a Leetcode 题目来源&#xff1a;3208. 交替组 II 解法1&#xff1a;环形数组 把数组复制一份拼接起来&#xff0c;和 3101 题一样&#xff0c;遍历数组的同时&#xff0c;维护以 i 为右端点的交替子数组的长度 cnt。 如果 i ≥ n 且 cnt ≥ k&#xff0c;那么 i…

基于springboot+vue+uniapp的开放实验室预约管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…

算法第九天:leetcode59.螺旋矩阵II

给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;[[1,2,3],[8,9,4],[7,6,5]]示例 2&#xff1a; 输入&#xff1a;n 1 输出&am…

如何高效删除 JavaScript 数组中的重复元素?

在日常编程中&#xff0c;我们经常会遇到数组去重的问题。今天&#xff0c;我们就来聊聊如何用JavaScript来优雅地解决这个问题。 问题描述 给定一个包含重复元素的数组&#xff0c;我们希望创建一个新的数组&#xff0c;其中只包含原始数组中的唯一值。例如&#xff0c;如果我…

十二、数组(2)

1.冒泡排序数组&#xff08;升序&#xff09; 冒泡排序&#xff1a;将一个整型数组排序&#xff08;升序&#xff09; 例&#xff1a; 10 9 8 7 6 5 4 3 2 1 9 10 8 7 6 …

Android11 framework 禁止三方应用开机自启动

Android11应用自启动限制 大纲 Android11应用自启动限制分析验证猜想&#xff1a;Android11 AOSP是否自带禁止三方应用监听BOOT_COMPLETED​方案禁止执行非系统应用监听到BOOT_COMPLETED​后的代码逻辑在执行启动时判断其启动的广播接收器一棍子打死方案&#xff08;慎用&#…

【Windows】操作系统之进程(第二篇)

目录 一、程序与进程的区别 一、定义与概念 二、主要区别 三、总结 二、进程的空间分配 1. 栈区&#xff08;Stack&#xff09; 2. 堆区&#xff08;Heap&#xff09; 3. 全局区&#xff08;静态区&#xff0c;Static Area&#xff09; 4. 文字常量区&#xff08;Text …

抓紧上车!中国学者用最新数据发一区top | GBD数据库周报(7.10~7.16)

全球疾病负担&#xff08;GBD&#xff09;是迄今为止规模最大、最全面的一项研究&#xff0c;旨在量化不同地区和不同时期的健康损失&#xff0c;从而改善卫生系统并消除差异。 该研究由华盛顿大学健康指标与评估研究所 (IHME) 牵头&#xff0c;是一项真正的全球性研究&#xf…

JVM:常用工具总结

文章目录 一、jstat工具 一、jstat工具 Jstat工具是JDK自带的一款监控工具&#xff0c;可以提供各种垃圾回收、类加载、编译信息等不同的数据。使用方法为&#xff1a;jstat -gc进程ID每次统计的时间间隔&#xff08;毫秒&#xff09;统计次数。 C代表Capacity容量&#xff0c…

高性能系统架构设计之:多级缓存

前言 为了提高系统的性能&#xff0c;一般会引入“缓存机制”&#xff0c;将部分热点数据存入缓存中&#xff0c;用空间换取时间&#xff0c;以达到快速响应的目的。 其实&#xff0c;缓存的应用远远不止存在于服务层&#xff08;传统的Redis缓存&#xff09;&#xff0c;从客户…

AIGC Kolors可图IP-Adapter-Plus风格参考模型使用案例

参考: https://huggingface.co/Kwai-Kolors/Kolors-IP-Adapter-Plus 代码环境安装: git clone https://github.com/Kwai-Kolors/Kolors cd Kolors conda create --name kolors python=3.8 conda activate kolors pip install -r requirements.txt python3 setup.py install…

2-39 基于matlab的二维拉普拉斯方程求解

基于matlab的二维拉普拉斯方程求解&#xff0c;用有限差分法求解二维拉普拉斯方程 所用的数值方案是空间二阶中心差分法 (5 点差分&#xff09;。输出三维求解结果。程序已调通&#xff0c;可直接运行。 2-39 matlab 二维拉普拉斯方程求解 - 小红书 (xiaohongshu.com)

PDF-Extract-Kit (PDF内容抽取开源项目)

Github 地址&#xff1a;https://github.com/opendatalab/PDF-Extract-Kit 整体介绍 PDF文档中包含大量知识信息&#xff0c;例如文本、表格、图像、公式等。此外&#xff0c;PDF的文档布局也相当复杂&#xff0c;页眉、页脚、表格标题、图片标题等等&#xff0c;提取高质量的…

Nature子刊 | ATAC-seq、RNA-seq和蛋白组联合分析揭示脂质激活转录因子PPARα在肾脏代偿性肥大的作用机制

2023年6月&#xff0c;美国国立心肺血液研究所的研究团队在Nature Communications上发表题为“Signaling mechanisms in renal compensatory hypertrophy revealed by multi-omics”的文章&#xff0c;该研究通过在单侧肾切除的小鼠模型中使用多组学方法&#xff08;蛋白质组学…

十一、面向对象进阶

文章目录 学习目标一、类方法和静态方法二、单例模式三、Python的继承3.1 继承的基本使用3.2 Python继承的特点3.3 私有属性的继承特点3.4 新式类和经典类四、对象相关的运算符和内置函数五、多态的使用5.1 子类重写父类的方法5.2 多态的使用学习目标 说出类方法和实例方法的区…