关于unity在扇形或圆环以及不完整球体内实现随机物体显示

各位小伙伴们大家好,由于老账户被禁,现在打算从今天起开一个新号来与大家进行技术原则上亲切友好滴交流。
今天和大家聊一个不完整圆环内随机生成物体的方法,知道的童鞋们可以选择上方的关闭按钮了,感兴趣的我们就进行下一步吧。先给大家放一张图:
画的有点土的图图
我们先在坐标系原点为中心画两个套娃(圆啦),比如要实现以原点为中心,正上方120度的圆环内随机产生物体,那么说白了就是在这个区域(绿色区域)随机生成点呗。
1、我们知道这两个套娃的半径那么就可以通过:
CBian= UnityEngine.Random.Range(MinDis,MaxDis);
算出圆环之间的点与原点之间的长度;
2、接下来就是我们初中学习的勾股定理的知识了,因为是120度内且为正上方,那么先通过
_Angle= UnityEngine.Random.Range(MinAngle,MaxAngle);
得出一个角度值,角度值的范围为30度到150度,因为按坐标系来说的话,第二象限内角度值就超过90度了,要使用勾股定理的话我们就需要转换一下:
if(_Angle>90)
_Angle=(_Angle-90)-1;
3、现在我们有了角度数值和三角形的最长边,那么通过勾股定理就知道了x坐标和y坐标了:
//求出x坐标,勾股定理进行求出x和z轴
xPos=CBian
Mathf.Cos(_Angle);
yPos=CBian*Mathf.Sin(_Angle);
4、现在我们有了x,z(就是现在的yPos),y坐标的话就可以随便设置了,因为是高度值嘛。但是现在随机坐标点内生成物体的话是在一个不规则的范围内,我们需要排除圆环两边以及下边多出来的边角料:
杂乱线团为边角料
5、那么先通过:
if(Mathf.Abs(yPos)<=5)
return;
if(Mathf.Abs(yPos)<=11&&Mathf.Abs(yPos)>5&&Mathf.Abs(xPos)>9)
return;
排除下方边角料。
6、通过:
s.transform.localPosition=new Vector3(xPos+xPos/5,-2.35f,Mathf.Abs(yPos)+Mathf.Abs(yPos/5));
排除左右的边角料,xyz的值通过勾股定理,想必大家都知道怎么算 了。至此我们就把这个难题解决啦!!!哈哈哈
代码在下方,仅供参考啦:

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

public class BirthBa : MonoBehaviour {
   

public GameObject[] BaZi;
//三角最长边和最短边
int MaxDis=25;
int MinDis=10;
//三角最大角和最小角度,实际的角度
int MinAngle=65
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值