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