如何改变"晕"检测到碰撞时在物体中?

时间:2016-11-13 14:50:50

标签: c# unity3d colors halo

我有一个对象在与另一个对象发生碰撞时会改变颜色,并减小其大小: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但是以编程方式我不知道。

1 个答案:

答案 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,因此它就像一个吊饰一样工作。尝试一下:)