如何在给定的体积/区域 3d 中生成对象

分享于2022年07月17日 c# unity3d visual-studio 问答
【问题标题】:如何在给定的体积/区域 3d 中生成对象(How can I spawn objects in a given volume/area 3d)
【发布时间】:2022-07-13 16:01:52
【问题描述】:

我的老师给了我一个任务,让我编写一个脚本,在给定的 3D 区域中随机生成对象,无论是矩形还是球体,我知道该怎么做,但不知道如何让它选择随机位置在该地区。

谢谢。

  • 什么面积/体积?矩形、立方体、球体、任意体积?听起来您正在寻找 Random.insideUnitSphere .. 乘以半径 -> 完成
  • 请在此处阅读 Homework questions
  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。
  • 好的,我会看到网,我想要一个矩形的地方,如果它们产生了thanka

【解决方案1】:

在 Unity 中测量范围(x 轴、y 轴、z 轴),然后使用时间来控制生成的频率。这些是随机生成的代码,不要忘记将预制件拖到立方体上

public GameObject cube;//Define a cube to store the prefab to be randomly generated
private float t1, t2;// Control how often to generate by time

void Start()
{
    t1 = 0;//time when the game starts
}

void Update()
{
    t2 = Time.fixedTime;//The time when the game progresses to a certain position
    if (t2 - t1 >= 2)
    {
        x = Random.Range(-50,50);//Specify the range in the x-axis direction
        z = Random.Range(-50,50);//Specify the range in the z-axis direction
        //Specify the scope according to the actual situation of your own scene
        Instantiate(cube, new Vector3(x, 0.5f, z), Quaternion.identity);// Randomly generate objects (prefab, generated position, orientation).
        t1 = t2;//Every time it is generated, let t1=t2

    }
}

  • 好的,谢谢
  • 我也在网上找了资料,真心希望对你有帮助。
  • 我的意思是这可行,但是 z 和 x 是否有可能让它在块/游戏对象而不是世界周围/中产生?
  • 因为它会在世界的起点而不是靠近物体的地方生成它们