Ray*_*cen 4 c# random spawn unity-game-engine
我有一个小问题......我想在我的场景中生成四边形,它们都应该有红色或绿色作为材质。但 Random.Range 函数只能 int\xc2\xb4s,我该如何解决它?
\n\nvoid SpawningSquadsRnd()\n {\n rndColor[0] = Color.red;\n rndColor[1] = Color.green;\n\n for (int i = 0; i < 5; i++)\n {\n GameObject quad = Instantiate(squadPrefab, new Vector3(Random.Range(- 23, 23), 1.5f, Random.Range(-23, 23)), Quaternion.identity);\n int index = Random.Range(0, rndColor.Length);\n\n quad.gameObject.GetComponent<Renderer>().material.color = //Random.Range(0, rndColor.Length);\n }\n }\nRun Code Online (Sandbox Code Playgroud)\n
如果您只想要红色和绿色,您可以使用基本的 if 和 else 结构来实现,如下所示:
int index = Random.Range(0, 1);
if(index == 1)
{
quad.gameObject.GetComponent<Renderer>().material.color = new Color(1, 0, 0);
}
else
{
quad.gameObject.GetComponent<Renderer>().material.color = new Color(0, 1, 0);
}
Run Code Online (Sandbox Code Playgroud)
如果你想要更好的东西,你可以在 0 和 1 之间随机浮动,然后在颜色之间进行 Lerp,如下所示:
float index = Random.Range(0, 1);
quad.gameObject.GetComponent<Renderer>().material.color = Color.Lerp(Color.red, Color.green, index);
Run Code Online (Sandbox Code Playgroud)
如果您想完全随机化颜色,也可以使用它。但是,它使您对所获得的颜色的控制有限。
quad.gameObject.GetComponent<Renderer>().material.color = Random.ColorHSV();
Run Code Online (Sandbox Code Playgroud)
ColorHSV方法有几个重载,可以让您对颜色进行一些控制,例如使用hueMin和hueMax。
控制颜色的另一种选择可以是@Szymon 所说的拥有一个包含大量颜色的颜色数组,并在 0 和该数组的长度之间随机分配一个索引。
| 归档时间: |
|
| 查看次数: |
5238 次 |
| 最近记录: |