Godot在多边形内随机获取点

chatgpt/2023/9/27 7:00:06

前言:

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

在矩形内获取随机点:

func generateRandomCoordinateInRect(pos,size):"""根据范围生成随机坐标"""var rect_min = posvar rect_max = pos + sizevar 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() / 3var x = randi() % n * 3var 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.exyb.cn/news/show-5312766.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

点云的凹多边形和凸多边形边界获取(附open3d python 代码)

先声明,点云的多边形求取必须在平面点云的基础上进行,可以把点云投影到平面,也可以直接把Z轴全部变为0,或者直接去掉Z轴数据不要来抽取平面点云 凸多边形边界: import open3d as o3d import numpy as np from scipy import spatial import matplotlib.pyplot as pltpcd =…

【Minio怎么用】Minio上传图片并Vue回显

流程: 目录 1.文件服务器Minio的安装 1.1 下载Minio安装后,新建1个data文件夹。并在该安装目录cmd 敲命令。注意不要进错目录。依次输入 1.2 登录Minio网页端 1.3 先建1个桶(buckets),点击create a bucket 2. Spr…

数据分析——AB测试应用与实战

摘要 某电商公司非常注重自己的落地页设计,希望通过改进设计来提高转化率。以往该公司全年转化率平均在13%左右,现在希望设计的新页面能够带来更高的转化率,希望新页面的转化率能有2%的提升,达到15%。在正式推出新页面之前&#…

3,this指针、深拷贝浅拷贝、namespace的使用

3,this指针、深拷贝浅拷贝、namespace的使用 3.1this指针3.2深拷贝和浅拷贝3.3namespace的使用 3.1this指针 定义:当前类指向自己地址的常量指针 指针被const修饰,指针指向的内容不能修改 this指针-》类 对象 占不占用大小? this…

k8s证书更新,kubeadm安装的K8S证书过期后无法使用后证书更新方法

k8s证书更新 1. 查看证书过期时间 #通过文件查看证书过期时间 for item in find /etc/kubernetes/pki -maxdepth 2 -name "*.crt";do openssl x509 -in $item -text -noout| grep Not;echo $item;done #通过命令查看证书过期时间 kubeadm certs check-expirationk8…

Redis以及Java使用Redis

一、Redis的安装 Redis是一个基于内存的 key-value 结构数据库。 基于内存存储,读写性能高 适合存储热点数据(热点商品、资讯、新闻) 企业应用广泛 官网:https://redis.io 中文网:https://www.redis.net.cn/ Redis…

【docker】docker部署单机redis

目录 一、搜索redis镜像二、拉取镜像三、创建容器,设置端口映射四、使用外部机器连接redis 一、搜索redis镜像 docker search redis二、拉取镜像 docker pull redis:5.0三、创建容器,设置端口映射 docker run -id --namemy_redis -p 6379:6379 redis:…

深入解析MySQL:类型、优势与使用实例

摘要:本文将深入探讨MySQL数据库的类型、为何选择这种类型的数据库以及其优点。通过详细的解释、具体的示例和输出结果,我们将全面介绍MySQL数据库的相关知识,并提供最后的百十字总结。 1. 引言 MySQL是一种常用的关系型数据库管理系统&…
推荐文章