Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实例化时如何限制Random.onUnitSphere的面积?_C#_Unity3d - Fatal编程技术网

C# 实例化时如何限制Random.onUnitSphere的面积?

C# 实例化时如何限制Random.onUnitSphere的面积?,c#,unity3d,C#,Unity3d,我正在使用Random.onUnitSphere在半径为50的3d中随机选择一个繁殖位置,它在球体中的任意位置随机实例化我的对象 现在我的问题是如何在球体的特定位置控制这种随机性 例如,假设在调用Random.onUnitSphere时,当所有对象都指向中心时,中心就是目标 如果我只想在实例化中使用球体的左上角,该怎么办?然后把球的左上角改成球的下极 object.transform.position = (Random.onUnitSphere * 50) + transform.positi

我正在使用
Random.onUnitSphere
在半径为50的3d中随机选择一个繁殖位置,它在球体中的任意位置随机实例化我的对象

现在我的问题是如何在球体的特定位置控制这种随机性

例如,假设在调用
Random.onUnitSphere
时,当所有对象都指向中心时,中心就是目标

如果我只想在实例化中使用球体的左上角,该怎么办?然后把球的左上角改成球的下极

object.transform.position = (Random.onUnitSphere * 50) + transform.position;
如果我只想在实例化中使用球体的左上角,该怎么办

只需在球体上获得一个随机点,并将轴的符号调整到所需的半球。这里我们使用
Math.Abs

MSDN在
Math.Abs

返回指定数字的绝对值

因此,通过使用
Math.Abs()
我们确保所有值都是正值。对于
x
-轴,这意味着所有值均为正值或“右侧”。通过在
Math.Abs
前面简单地应用减号(
-
),我们可以确保最终结果都是负数或“左”

y
轴很简单。我们只使用
Math.Abs
,这将导致所有值均为正值,在默认坐标系中为“top”

然后把球的左上角改成球的下极

object.transform.position = (Random.onUnitSphere * 50) + transform.position;
告诉我更多

为了更好地理解您的代码,您能否解释一下
P.x=-Math.Abs(P.x)
将强制
随机。onUnitySphere
仅在其随机实例化上强制左
// continuing from above...
// move to bottom pole
object.transform.position = P + transform.position.