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

            #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.mzph.cn/pingmian/5251.shtml

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

相关文章

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第15课-xcard方式跳转平行3D馆

【WEB前端2024】开源智体世界&#xff1a;乔布斯3D纪念馆-第15课-xcard方式跳转平行3D馆 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智…

【C/C++】动态内存管理(C:malloc,realloc,calloc,free || C++:new,delete)

&#x1f525;个人主页&#xff1a; Forcible Bug Maker &#x1f525;专栏&#xff1a; C | | C语言 目录 前言C/C内存分布C语言中的动态内存管理&#xff1a;malloc/realloc/realloc/freemallocrealloccallocfree C中的动态内存管理&#xff1a;new/deletenew和delete操作内…

华为校招机试 - 足球队员射门能力排序(20240424)

在线OJ测试 题目详情 - 足球队员射门能力排序 - HydroOJ 题目描述 球队有 n 个足球队员参与 m 次射门训练 每次射门进球用 1 表示,射失则用 0 表示,依据如下规则对该 n 个队员的射门能力做排序: 进球总数更多的队员射门能力更强若进球总数—样多,则比较最多—次连续进球…

港口数据复杂不知道如何监控?来试试FineVis所展现的智慧港口看板

一、智慧港口是什么 智慧港口代表着港口建设的未来趋势和发展方向。以信息物理系统为框架&#xff0c;智慧港口通过创新应用高新技术&#xff0c;实现了物流供给方和需求方之间的沟通&#xff0c;并将它们融入集疏运一体化系统中。这种系统极大地提升了港口及其相关物流园区对…

Python教程:使用psutil和rich库实现一个终端资源监控小工具(附完整代码)

在本文中&#xff0c;我们将介绍如何使用 Python 的 psutil 和 rich 库来实现一个终端资源监控小工具。psutil 是一个跨平台的 Python 库&#xff0c;用于获取关于系统进程和系统利用率的信息&#xff0c;而 rich 是一个 Python 库&#xff0c;用于在终端中创建美观的输出。 1.…

【LeetCode:1103. 分糖果 II + 模拟】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

山东专升本计算机基础 --- Windows 10 操作系统安全

文章目录 Windows 10 操作系统安全1、Windows 10 系统安装的安全2、系统帐户安全3、应用安全策略4、网络安全策略 Windows 10 操作系统安全 1、Windows 10 系统安装的安全 操作系统的安全和安装操作系统的选项密切相关。 选择 NTFS 文件格式分区组件的定制安装 Windows 10 …

LiveCD镜像文件的定制化

最近想要定制化一款属于自己的LiveCD镜像文件&#xff0c;并且里边封装好所需要的软件程序&#xff0c;本文将会记录具体的操作步骤&#xff0c;供有需要的人参考借鉴。 环境说明&#xff1a; 环境配置说明配置参数编码环境Centos7.9LiveCD文件CentOS-7-livecd-x86_64.iso 附…

西门子PCU50.3数控面板维修6FC5220-0AA31-2AA0

西门子数控面板维修&#xff0c;西门子工控机触摸屏维修6FC5247-0AA00-0AA3 西门子数控机床维修包括&#xff1a;840C/CE、840Di/DSL、840Di SL、802C S、802D SL、810D/DE、820D SL、S120数控电路板、数控伺服驱动模块、控制模块修、电源模块&#xff0c;西门子数控机床控制面…

Redis缓存介绍以及常见缓存问题:穿透、雪崩和击穿

概念 缓存就是数据交换的缓冲区&#xff08;Cache&#xff09;&#xff0c;是存贮数据的临时地方&#xff0c;一般读写性能较高。 作用&#xff1a; 降低后端负载 提高读写效率&#xff0c;降低相应时间 成本&#xff1a; 数据一致性成本 代码维护成本 运维成本 缓存更…

ICSE 2024 PaperList1

1. 勒索软件攻击造成的数据破坏的实证研究 An Empirical Study of Data Disruption by Ransomware Attacks 近年来&#xff0c;勒索软件对软件生态系统的威胁日益令人担忧&#xff0c;这就提出了对大规模、全面的勒索软件分析的需求&#xff0c;以帮助针对未知攻击制定更有效…

如何使用dlib库进行目标跟踪

dlib 库本身并不直接提供目标跟踪的功能。目标跟踪是计算机视觉领域的一个独立任务,通常涉及对视频序列中的特定目标(如人脸、车辆、行人等)进行持续的识别和定位。然而,dlib 库中的某些组件(如人脸检测器、HOG特征提取器等)可以被用作构建目标跟踪系统的基础。 要在dli…

QT爱发函,介绍一下平替QT的八大桌面开发框架。

Qt是一款跨平台的C应用程序开发框架&#xff0c;它提供了丰富的库和工具&#xff0c;可以用于开发图形用户界面、嵌入式系统、移动应用等。Qt拥有商业版和开源版两种许可证&#xff0c;商业版需要支付授权费用&#xff0c;而开源版则可以免费使用。 对于替代Qt的框架&#xff0…

前端如何将接口传来的列表数据(数组)直接下载成csv文件

前言&#xff1a;最近遇到一个需求&#xff0c;需要实现一个下载表格数据的操作&#xff0c;一般来说是前端请求后端的下载接口&#xff0c;将文件流下载下来&#xff0c;但是因为这个项目任务时间比较紧&#xff0c;后端没时间做下载接口&#xff0c;所以暂时由前端直接调列表…

新手开通抖音小店的时候,必须要注意的6点!建议收藏!

大家好&#xff0c;我是电商小V 今天咱们就来详细的说一下开通抖音小店的时候需要注意的事项&#xff0c;避免咱们在开店的时候踩坑导致店铺后期的正常运营&#xff0c; 第一点&#xff1a;是关于营业执照的问题 营业执照咱们都知道&#xff0c;分为个体和企业的&#xff0c;咱…

区块链详解

1. 概述 1.1 什么是区块链&#xff1f; 区块链是一种分布式数据库技术&#xff0c;它以链式数据结构的形式存储数据&#xff0c;每个数据块与前一个数据块相关联&#xff0c;形成了一个不断增长的数据链。每个数据块中包含了一定数量的交易信息或其他数据&#xff0c;这些数据…

Servlet、Tomcat、Control区别

1. Servlet Servlet 是一种动态网站开发技术&#xff0c;专门用来处理客户端的请求并生成响应。Servlet直接与Tomcat交互&#xff0c;处理从Tomcat传来的请求。然后生成网页或其他类型的响应发送回Tomcat&#xff0c;Tomcat再将这些响应返回给用户的浏览器。 2. TomCat tomc…

【数据结构】三、栈和队列:2.顺序栈共享栈(顺序栈的初始化,判空,进栈,出栈,读取栈顶,顺序栈实例)

文章目录 1.顺序栈1.1初始化1.2判空1.3进栈1.4出栈1.5读取栈顶1.6销毁栈❗1.7顺序栈c实例 2.共享栈2.1初始化2.2判满 1.顺序栈 用顺序存储实现的栈 顺序栈的缺点&#xff1a;栈的大小不可变。 #define MaxSize 10 //定义栈中元素的最大个数 typedef struct{ElemType data[…

28377d升级

dsp 28377在线升级 实例总结_f021_cpu0_w1_register_address-CSDN博客

leetcode1143. 最长公共子序列(ACM模式解法)

题目描述 给你一个序列X和另一个序列Z&#xff0c;当Z中的所有元素都在X中存在&#xff0c;并且在X中的下标顺序是严格递增的&#xff0c;那么就把Z叫做X的子序列。 例如&#xff1a;Z是序列X的一个子序列&#xff0c;Z中的元素在X中的下标序列为<1,2,4,6>。 现给你两个…