Эй, вот моя проблема. Я использую UTS Pro, которая до сих пор работает нормально. UTS порождает для меня несколько машин (сборных), и они будут двигаться по заданному пути. Я добавил деактивированный скрипт в один из префабов и написал некоторый код, который изменится на активный, когда машина столкнется с коллайдером.
if(playerTriggered == true && playerCounter<1 && gameobj.tag == "Car")
{
projections = GameObject.FindGameObjectsWithTag("Projection");
foreach(GameObject projection in projections)
{
if(projection.GetComponentInParent<Rigidbody>().GetInstanceID() == gameobj.GetComponentInParent<Rigidbody>().GetInstanceID())
{
walkPath = projection.GetComponentInParent<WalkPath>();
projection.GetComponentInParent<Idle>().enabled = true;
walkPath.setChangeCarPath(gameobj.gameObject);
}
}
playerCounter++;
}
Это нормально работает для меня. Когда я нажимаю кнопку воспроизведения, и машина попадает в коллайдер, я вижу, что сценарий активирован. В другом классе я пытался запустить этот код
if (car.gameObject.GetComponent<Idle>().enabled == true)
{
Debug.Log("UM - IF");
return points2[0, index];
}
else
{
return points[0, index];
}
Я не понимаю, что оператор if всегда ложен. Даже при том, что у машины в сцене есть включенный сценарий. Я также попытался сравнить экземпляры идентификаторов переданного игрового объекта с автомобильным объектом. У них также есть разные идентификаторы.
Надеюсь, кто-нибудь может мне помочь и объяснить проблему.