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

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

Редактор Player:
Редактор 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

