Godot在多边形内随机获取点

news2024/11/13 9:49:39

前言:

我做了一个随机生成器,可以生成游戏道具,之前是矩形比较好算,随着关卡设计我需要多边形的生成方式。

在矩形内获取随机点:

func generateRandomCoordinateInRect(pos,size):
	"""根据范围生成随机坐标"""
	var rect_min = pos
	var rect_max = pos + size
	var x = rand_range(rect_min.x, rect_max.x)
	var y = rand_range(rect_min.y, rect_max.y)
	var randomCoordinate = Vector2(x, y)
	return randomCoordinate

在Polygon2D内获取随机点:

# 区域内获取随机点
func getRandomPoint():
	var triangles = Geometry.triangulate_polygon(self.polygon)
	var n = triangles.size() / 3
	var x = randi() % n * 3
	var p0 = self.polygon[triangles[x]]
	var p1 = self.polygon[triangles[x+1]]
	var p2 = self.polygon[triangles[x+2]]
	var p3 = lerp(p0,p1,rand_range(0, 1))
	var p4 = lerp(p2,p3,rand_range(0, 1))
	return p4

原理:

首先获取多边形所有的点,然后转换为三角形索引数组

随机获取一个三角形,并在三角形内随机获取点,方法如下:

在AB上随机抽取一个点,命名为D,然后再在CD上随机抽取一个点

代码中p0,p1,p2是三角形的ABC三个点

 

参考链接:

https://www.jianshu.com/p/36fa431311ac

https://www.reddit.com/r/godot/comments/mqp29g/how_do_i_get_a_random_position_inside_a_collision/

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

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

相关文章

Reinforcement-Learning

文章目录 Reinforcement-Learning1. RL方法分类汇总:2. Q-Learning3. SARSA算法4. SARSA(λ) Reinforcement-Learning 1. RL方法分类汇总: (1)不理解环境(Model-Free RL)&#xff…

无涯教程-jQuery - outerWidth( margin])方法函数

outerWidth([margin])方法获取第一个匹配元素的外部宽度(默认情况下包括边框和填充)。 此方法适用于可见和隐藏元素。由于父项被隐藏的元素不支持此功能。 outerWidth( [margin] ) - 语法 selector.outerWidth( [margin] ) 这是此方法使用的所有参数的描述- margin - 此…

OpenLayers实战进阶专栏目录,OpenLayers实战案例,OpenLayers6实战教程

前言 本篇作为OpenLayers实战进阶教程的目录,用于整理汇总专栏所有文章,方便查找。 OpenLayers是前端最流行的JS二维地图引擎之一。 反馈建议 OpenLayers系列-交流专区,建议和问题反馈 Openlayers实战进阶 Openlayers实战,O…

SQL-每日一题【1148. 文章浏览 I】

题目 Views 表: 请查询出所有浏览过自己文章的作者 结果按照 id 升序排列。 查询结果的格式如下所示: 示例 1: 解题思路 1.题目要求我们查询出所有浏览过自己文章的作者,结果按照 id 升序排列。 2.我们只需要筛选出 author_id …

消防应急照明设置要求在炼钢车间电气室的应用

摘 要:文章以GB51309—2018《消防应急照明和疏散指示系统技术标准》为设计依据,结合某炼钢车间转炉项目的设计过程,在炼钢车间电气室的疏散照明和备用照明的设计思路、原则和方法等方面进行阐述。通过选择合理的消防应急疏散照明控制系统及灯具供配电方案…

java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis

 电子招标采购软件 解决方案 招标面向的对象为供应商库中所有符合招标要求的供应商,当库中的供应商有一定积累的时候,会节省大量引入新供应商的时间。系统自动从供应商库中筛选符合招标要求的供应商,改变以往邀标的业务模式。招…

独立站有流量没订单是什么原因呢?怎么解决?

和自带流量的电商平台比起来,外贸独立站自身是没有流量的。独立站卖家要订单,就必须主动去引流。 如果你是1个独立站新手卖家,你很可能遇到过这种问题:跑了一段时间广告,广告费花了几百上千美金,流量来了不…

集合简述

集合ListArrayListLinkedList SetHashSetTreeSet MapHashMapTreeMap 集合与数组的区别 集合 集合是java中的一个容器,可以在里面存放数据,容量可以发生改变 从集合框架结构可以分析得知: 1、集合主要分为Collection和Map两个接口 2、Collecti…

简单版本视频播放服务器V4,layui界面

简单版本视频播放服务器V4 前一个版本内容,可以查看 https://blog.csdn.net/wtt234/article/details/131759154 优化内容: 1.返回列表的优化,优化了原来返回空列表名称的问题 2.前端才有layui优化内容 后端: package mainim…

配置IPv6 over IPv4手动隧道示例

组网需求 如图1所示,两台IPv6主机分别通过SwitchA和SwitchC与IPv4骨干网络连接,客户希望两台IPv6主机能通过IPv4骨干网互通。 图1 配置IPv6 over IPv4手动隧道组网图 配置思路 配置IPv6 over IPv4手动隧道的思路如下: 配置IPv4网络。配置接…

【Golang 接口自动化06】微信支付md5签名计算及其优化

目录 前言 初始方式 代码说明 优化 最终方法 性能对比 参考代码 总结 资料获取方法 前言 可能看过我博客的朋友知道我主要是做的支付这一块的测试工作。而我们都知道现在比较流行的支付方式就是微信支付和支付宝支付,当然最近在使用低手续费大力推广的京东…

ELD透明屏在智能家居中有哪些优点展示?

ELD透明屏是一种新型的显示技术,它能够在不需要背光的情况下显示图像和文字。 ELD透明屏的原理是利用电致发光效应,通过在透明基板上涂覆一层特殊的发光材料,当电流通过时,发光材料会发出光线,从而实现显示效果。 ELD…

企业电子招投标采购系统java spring cloud+spring boot功能模块功能描述+数字化采购管理 采购招投标

​功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力,为外…

【深度学习】MAT: Mask-Aware Transformer for Large Hole Image Inpainting

论文:https://arxiv.org/abs/2203.15270 代码:https://github.com/fenglinglwb/MAT 文章目录 AbstractIntroductionRelated WorkMethod总体架构卷积头Transformer主体Adjusted Transformer Block Multi-Head Contextual Attention Style Manipulation Mo…

计算机视觉实验:图像处理综合-路沿检测

目录 实验步骤与过程 1. 路沿检测方法设计 2. 路沿检测方法实现 2.1 视频图像提取 2.2 图像预处理 2.3 兴趣区域提取 2.4 边缘检测 ​​​​​​​2.5 Hough变换 ​​​​​​​2.6 线条过滤与图像输出 3. 路沿检测结果展示 4. 其他路沿检测方法 实验结论或体会 实…

防雷保护区如何划分,防雷分区概念LPZ介绍

在防雷设计中,很重要的一点就是防雷分区的划分,只有先划分好防雷区域等级,才好做出比较好的防雷器设计方案。 因为标准对不同区安装的防雷浪涌保护器要求是不一样的。 那么,防雷保护区是如何划分的呢? 如上图所示&…

关于led显示屏编程技术有哪些

LED显示屏编程技术主要涉及控制LED显示屏的内容、亮度、颜色等参数,以及与其他设备或系统的数据交互。下面列举一些常见的LED显示屏编程技术: 1. LED显示屏控制协议: 不同品牌和型号的LED显示屏通常都采用特定的控制协议,如DMX51…

【数据结构】_6.队列

目录 1.概念 2.队列的使用 3.队列模拟实现 4.循环队列 5.双端队列 6.OJ题 6.1 用队列实现栈 6.2 用栈实现队列 1.概念 (1)队列是只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表; (2&am…

Linux6.21 ansible playbook 剧本

文章目录 计算机系统5G云计算第一章 LINUX ansible playbook 剧本一、概述二、playbook应用1.示例2.运行playbook3.定义、引用变量4.指定远程主机sudo切换用户5.when条件判断6.迭代7.Templates 模块8.tags 模块 计算机系统 5G云计算 第一章 LINUX ansible playbook 剧本 一、…

金现代LIMS在电子行业的应用

近期,随着国家政策对可靠性检验标准的进一步提升,电子、机械等相关行业对LIMS实验室管理系统的需求愈发迫切。 政策速递(一) 提升制造业质量与可靠性管理水平 01 2023年6月,工业和信息化部、教育部、科技部、财政部、…