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.