我有一个对象在与另一个对象发生碰撞时会改变颜色,并减小其大小:gameObject.transform.localScale /= 2;
但它有一个白色halo
。
我希望halo
符合我对象的颜色。因此,当对象是绿色时,halo
也将是绿色。如果我的物体是蓝色的,那么halo
也会是蓝色的。此外,我希望当我的对象检测到与其他对象的碰撞时,halo
也会减少,我不知道该怎么办。
按下屏幕时代码更改颜色(蓝色,红色或绿色):
public class ChangeColor : MonoBehaviour {
public Material[] materials;
public Renderer rend;
private int index = 1;
// Use this for initialization
void Start () {
rend = GetComponent<Renderer> ();
rend.enabled = true;
}
public void Update() {
if (materials.Length == 0) {
return;
}
if (Input.GetMouseButtonDown (0)) {
index += 1;
if (index == materials.Length + 1) {
index = 1;
}
print (index);
rend.sharedMaterial = materials [index - 1];
}
}
}
我知道使用halo
但是以编程方式我不知道。
答案 0 :(得分:0)
需要大量工作才能访问此Halo组件,让我通过代码进行演示。
Private void Start() {
SerializedObject haloComponent = new SerializedObject(this.gameObject.GetComponent("Halo"));
haloComponent?.FindProperty("m_Color").colorValue = Color.Red;
}
您还可以做更多的事情,但这是获得Halo引用的方法。
请注意,GetComponent<>
正在搜索Halo,而GetComponent("Halo")
正在搜索Halo。由于该组件被命名为Halo,因此它就像一个吊饰一样工作。尝试一下:)