Как изменить "ореол" в объекте при обнаружении столкновения?

У меня есть объект, который меняет свой цвет, когда он сталкивается с другим объектом, и уменьшает его размер: 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 ответов

Этот компонент 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, он работает как шарм. Попробуй:)

Другие вопросы по тегам