目标
- 得到一个2D的环形的随机范围,然后使用玩家角色的坐标加上生成的坐标就可以实现随机位置生成敌人,
- 同时也可以通过限制 distance ,指定生成距离为 distance 的坐标点,得到的结果为一个圆上的所有点
测试代码
public class TestRandom : MonoBehaviour
{
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
var randomPos = RandomPos(5f, 10f);
Debug.Log("测试的距离范围是5-10,随机出来的向量为: " + randomPos);
}
}
public Vector2 RandomDistancAndPos(float min, float max)
{
var distance = Random.Range(min, max);
var symbolX = Random.Range(0, 2) == 1 ? 1f : -1f;
var randomX = symbolX * Random.Range(0, distance);
var symbolY = Random.Range(0, 2) == 1 ? 1f : -1f;
var posY = symbolY * Mathf.Sqrt(distance * distance - randomX * randomX);
Vector2 pos = new Vector2(randomX, posY);
return pos;
}
public Vector2 RandomOnlyPos(float min, float max, float distance)
{
var symbolX = Random.Range(0, 2) == 1 ? 1f : -1f;
var randomX = symbolX * Random.Range(0, distance);
var symbolY = Random.Range(0, 2) == 1 ? 1f : -1f;
var posY = symbolY * Mathf.Sqrt(distance * distance - randomX * randomX);
Vector2 pos = new Vector2(randomX, posY);
return pos;
}
}
测试结果
![请添加图片描述](https://i-blog.csdnimg.cn/blog_migrate/86623c911af75403a102d47f8a92ddd1.png)