unity生成随机表元素间隔距离相同的点

embedded/2024/10/19 15:24:21/

            #region   生成随机点
            float minX = -800f;
            float maxX = 800f;
            float minY = -400f;
            float maxY = 400f;
            // 计算相邻点之间的间距
            float distanceBetweenPoints = 500f;
            // 生成指定数量的点
            for (int i = 0; i < 12; i++)
            {
                // 随机生成点的位置
                float randomX = UnityEngine.Random.Range(minX, maxX);
                float randomY = UnityEngine.Random.Range(minY, maxY);

                Vector2 newPoint = new Vector2(randomX, randomY);

                if (i == 0)
                {
                    mPosTf3.localPosition = newPoint;
                    mPos.Add(newPoint);
                }
 
                // 移动生成的点,确保相邻点之间的间距
                if (i > 0)
                {
                    // 随机生成点的位置
                    Vector2 randomPosition = new Vector3(UnityEngine.Random.Range(minX, maxX), UnityEngine.Random.Range(minY, maxY));

                    检查点的位置是否超出范围,如果是则重新随机位置
                    //while (IsPositionOutOfRange(randomPosition, mPos))
                    //{
                    //    randomPosition = new Vector3(UnityEngine.Random.Range(minX, maxX), UnityEngine.Random.Range(minY, maxY), 0f);
                    //}


                    Vector2 previousPointPosition = mPos[i - 1];


                    Vector2 newPosition = previousPointPosition + (randomPosition - previousPointPosition).normalized * distanceBetweenPoints;
                    // 检查新位置是否超出范围,如果是则重新随机位置
                    while (IsPositionOutOfRange(newPosition))
                    {
                        randomPosition = new Vector2(UnityEngine.Random.Range(minX, maxX), UnityEngine.Random.Range(minY, maxY));
                        newPosition = previousPointPosition + (randomPosition - previousPointPosition).normalized * distanceBetweenPoints;
                    }

                    //Vector3 newPosition;
                    //do
                    //{
                    //    // 随机生成点的位置
                    //    newPosition = new Vector2(UnityEngine.Random.Range(minX, maxX), UnityEngine.Random.Range(minY, maxY));
                    //} while (Vector3.Distance(newPosition, mPos[i - 1]) < 500f&& Vector3.Distance(newPosition, mPos[i - 1])>300f); // 检查点与上一个点的距离是否小于500像素
                    mPos.Add(newPosition);
                }
            }
            for (int i = 0; i < mPos.Count; i++)
            {
                Debug.Log($"mPos==={mPos[i]}");
            }
            #endregion

        bool IsPositionOutOfRange(Vector2 position)
        {
            // 检查点的位置是否超出范围
            float minX = -800f;
            float maxX = 800f;
            float minY = -400f;
            float maxY = 400f;

            if (position.x < minX || position.x > maxX || position.y < minY || position.y > maxY)
            {
                return true;
            }

            return false;
        }
 


http://www.ppmy.cn/embedded/35419.html

相关文章

jmeter后置处理器提取到的参数因为换行符导致json解析错误

现象&#xff1a; {"message":"JSON parse error: Illegal unquoted character ((CTRL-CHAR, code 10)): has to be escaped using backslash to be included in string value; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Ill…

vant H5 地址编辑框

vant H5 地址编辑框 效果图&#xff1a; 上代码&#xff1a; <!-- 地区选择 --> <template><div class"page-content"><van-fieldv-model"formNationaAll"is-linkreadonlyrequiredname"国家/地区"label"国家/地…

pptx 文件版面分析-- python-pptx(python 文档解析提取)

安装 pip install python-pptx -i https://pypi.tuna.tsinghua.edu.cn/simple --ignore-installedpptx 解析代码实现 from pptx import Presentation file_name "rag_pptx/test1.pptx" # 打开.pptx文件 ppt Presentation(file_name) for slide in ppt.slides:#pr…

上海计算机学会2021年1月月赛C++丙组T2康托表

题目背景 康托是一名数学家&#xff0c;他证明了一个重要的定理&#xff0c;需要使用一张表&#xff1a; 这个表的规律是&#xff1a; 从上到下&#xff1a;每一行的分子依次增大&#xff1b;从左到右&#xff1a;每一列的分母依次增大。 康托以一种不重复、不遗漏的方式&am…

AIGC-音频生产十大主流模型技术原理及优缺点

音频生成(Audio Generation)指的是利用机器学习和人工智能技术&#xff0c;从文本、语音或其他源自动生成音频的过程。 音频生成行业是AIGC技术主要渗透的领域之一。AI音频生成行业是指利用人工智能技术和算法来生成音频内容的领域。按照输入数据类型不同可以分为&#xff1a;根…

一起了解开源自定义表单的优势表现

随着社会的进步和科技的发展&#xff0c;越来越多的中小企业希望采用更为先进的软件平台&#xff0c;助力企业实现高效率的流程化管理。低代码技术平台、开源自定义表单已经慢慢走入大众视野&#xff0c;成为一款灵活、高效的数字化转型工具。流辰信息专注于低代码技术平台的研…

第08章 IP分类编址和无分类编址

8.1 本章目标 了解IP地址的用途和种类了解分类编址和无分类编址区别掌握IP地址、子网掩码、网关概念及使用掌握子网划分及超网划分方法掌握无分类编址的改变和使用 8.2 IP地址的用途和种类 分类编址&#xff1a;造成地址的浪费&#xff0c;以及地址不够用&#xff1b;无分类编…

大数据面试SQL每日一题系列:最高峰同时在线主播人数。字节,快手等大厂高频面试题

之后会不定期更新每日一题sql系列。 SQL面试题每日一题系列内容均来自于网络以及实际使用情况收集&#xff0c;如有雷同&#xff0c;纯属巧合。 1.题目 **问题1&#xff1a;**如下为某直播平台各主播的开播及关播时间数据明细&#xff0c;现在需要计算该平台最高峰期同时在线…