Как поочередно менять цвет объекта при попадании в тригер?

Не понимаю как правильно задать условие что бы оно срабатывало один раз, а не меняло быстро с белого на черный. Тригер нужно обязательно пересекать.

using UnityEngine;

public class ColorChange : MonoBehaviour
{
    private void OnTriggerEnter2D(Collider2D Trigger) {
        if (Trigger.tag == "Player")
        {
            if(Trigger.gameObject.GetComponent<SpriteRenderer>().color == Color.black)
            {
                Trigger.gameObject.GetComponent<SpriteRenderer>().color = Color.white;
                Debug.Log("+");
            }
            else if(Trigger.gameObject.GetComponent<SpriteRenderer>().color == Color.white)
            {   
                Trigger.gameObject.GetComponent<SpriteRenderer>().color = Color.black;
                Debug.Log("-");
            }
        }
    }
}

Консоль при одном нажатии на пробел: Debug.Log

Здесь как выглядит самоприложение: Тригер

Редактор Player:

Player

Редактор Trigger:

Trigger


Ответы (1 шт):

Автор решения: Valera Kvip
private void OnTriggerEnter2D(Collider2D Trigger) {
    if (Trigger.tag == "Player")
    {
        if(Trigger.gameObject.GetComponent<SpriteRenderer>().color == Color.black)
        {
            Trigger.gameObject.GetComponent<SpriteRenderer>().color = Color.white;
        }

        else if(Trigger.gameObject.GetComponent<SpriteRenderer>().color == Color.white)
        {   
            Trigger.gameObject.GetComponent<SpriteRenderer>().color = Color.black;
        }
    }
}

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/if-else

→ Ссылка