Hello, I have done a script to keep track of number of collisions each object has and change their color according to numbers. so when 2 objects collide, they both increase in color and have a darker color and decrease when they get apart. But when I try it`` with 2 elements its fine but when I try it with 3 different elements, it fails. Any help/ advice? THANKS!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Counterlist : MonoBehaviour
{
[SerializeField]
Material _grey;
[SerializeField]
Material _blue1;
[SerializeField]
Material _blue2;
[SerializeField]
Material _blue3;
public List<int> counterList = new List<int> { };
public void Start()
{
int i = 0;
while (i <= 2)
{
counterList.Add(0);
i++;
}
print("countlist:" + counterList.Count);
}
public void Update()
{
for (int j = 0; j < counterList.Count; j++)
{
{
if (counterList[j] == 0)
{
gameObject.transform.GetComponent<MeshRenderer>().material = _grey;
}
else if (counterList[j] == 1)
{
gameObject.transform.GetComponent<MeshRenderer>().material = _blue1;
}
else if (counterList[j] == 2)
{
gameObject.transform.GetComponent<MeshRenderer>().material = _blue2;
}
}
}
}
//int j = 0;
//while (j <= 1)
//{
// if (j == int.Parse(gameObject.transform.tag))
// {
// if (counterList[j] == 0)
// {
// gameObject.transform.GetComponent<MeshRenderer>().material = _grey;
// }
// else if (counterList[j] == 1)
// {
// gameObject.transform.GetComponent<MeshRenderer>().material = _blue1;
// }
// }
// j++;
//}
void OnCollisionEnter(Collision col)
{
string MovingObejct = col.gameObject.transform.tag;
int MovingObjectNum = int.Parse(MovingObejct);
print("update ıs " + MovingObjectNum);
counterList[MovingObjectNum] = 1 + counterList[MovingObjectNum];
col.collider.gameObject.GetComponent<Counterlist>().counterList[MovingObjectNum] = 1 + counterList[MovingObjectNum];
}
void OnCollisionExit(Collision col2)
{
string MovingObejct = col2.collider.gameObject.transform.tag;
int MovingObjectNum = int.Parse(MovingObejct);
print("leavıng update ıs " + MovingObjectNum);
counterList[MovingObjectNum] = counterList[MovingObjectNum] - 1;
col2.collider.gameObject.GetComponent<Counterlist>().counterList[MovingObjectNum] = counterList[MovingObjectNum]-1;
}
}