每秒钟创建一个对象,我需要通过彩虹更改每个下一个对象的颜色。我知道如何更改自己的颜色对象,但是我需要一种算法来做到这一点
我认为每次方便地编写每个颜色代码都不方便
Color32 color = new Color(0.5f, 1f, 0.5f, 1f); // good
但是我需要第一个对象255,190,0,接下来的230,255,10,我的意思是色环重复。我该怎么办?
答案 0 :(得分:2)
为了使颜色按“彩虹”顺序枚举,您需要在HVS颜色模型中循环色相并转换为RGB模型以初始化新对象。 this Wikipedia文章中介绍了这两种模型以及转换。
答案 1 :(得分:-1)
首先简化一些事情,使其线性化。
第一种方法:
public GameObject target;
public int n=50;
void Awake(){
for(int i=0;i<n;i++)
{
GameObject tem=Instantite(target,new Vector3(i,0,0),Quanterion.Identity);
if(i/7==0)
{
tem.GetComponent<MeshRenderer>().material.color=Color.violate;
}
else if(i/7==1)
{
tem.GetComponent<MeshRenderer>().material.color=Color.blue;
}
else if(i/7==2)
{
tem.GetComponent<MeshRenderer>().material.color=Color.indigo;
}
if(i/7==3)
{
tem.GetComponent<MeshRenderer>().material.color=Color.green;
}
if(i/7==4)
{
tem.GetComponent<MeshRenderer>().material.color=Color.yellow;
}
if(i/7==5)
{
tem.GetComponent<MeshRenderer>().material.color=Color.orange;
}
if(i/7==6)
{
tem.GetComponent<MeshRenderer>().material.color=Color.red;
}
}
}
这将为我们产生一条线性带。
现在是最后一个。 //也可以呈现彩虹形状,也许您没问过
public GameObject target;
public int n=50;
public int r=50;//try adjusting this one, this value can also be achieved doing some calculation but I forgot them
void Awake() {
float deg=0;
for(int i=0;i<n;i++)
{
if(i!=0)
deg=360/(float)i;
GameObject tem=Instantite(target,Vector3(r*Mathf.Deg2Rad*cos(deg)/2, r*Mathf.Deg2Rad*sin(deg)/2,0),Quanterion.Identity);
if(i/7==0)
{
tem.GetComponent<MeshRenderer>().material.color=Color.violate;
}
else if(i/7==1)
{
tem.GetComponent<MeshRenderer>().material.color=Color.blue;
}
else if(i/7==2)
{
tem.GetComponent<MeshRenderer>().material.color=Color.indigo;
}
if(i/7==3)
{
tem.GetComponent<MeshRenderer>().material.color=Color.green;
}
if(i/7==4)
{
tem.GetComponent<MeshRenderer>().material.color=Color.yellow;
}
if(i/7==5)
{
tem.GetComponent<MeshRenderer>().material.color=Color.orange;
}
if(i/7==6)
{
tem.GetComponent<MeshRenderer>().material.color=Color.red;
}
}
}