Мерцание триггерного коллайдера

#c# #visual-studio #unity3d

#c# #visual-studio #единство 3d #unity3d

Вопрос:

Я новичок в Unity и создаю простую игру в пятнашки с игроками, похожими на автомобили. Однако у меня возникли проблемы с моим триггерным коллайдером. Когда я помечаю другую машину, она как бы мигает, помечена как true / false. Вот мой код.

 public Color TaggedColor;
public Color NoTaggedColor;
public bool Tagged;

// Start is called before the first frame update
void Start()
{
    Tagged = true;
    GetComponent<Image>().color = TaggedColor;
}

// Update is called once per frame
void Update()
{

}

void OnTriggerEnter2D(Collider2D other)
{

    if (other.tag == "P2")
    {
        if (Tagged == false)
        {
            Tagged = true;
            GetComponent<Image>().color = TaggedColor;
        }
        else
        {
            if (Tagged == true)
            {
                Tagged = false;
                GetComponent<Image>().color = NoTaggedColor;
            }
        }

        Debug.Log("TAG!");
    }


}

void GotTagged()
{
    if (Tagged == false)
    {
        Tagged = true;
        //GetComponent<Image>().color = TaggedColor;
    }

}

void TaggedOtherPlayer()
{
    if (Tagged == true)
    {
        Tagged = false;
        GetComponent<Image>().color = NoTaggedColor;
    }

}
  

У меня есть Второй код для P2, в котором единственное изменение — это start, а тег — P1. Я не уверен, является ли эта проблема чем-то в моем коде или это сам коллайдер. Если у кого-то есть какие-либо идеи, почему это происходит, я хотел бы это услышать!

Обновление: я предполагаю, что проблема исходит от Коллайдеров, потому что у меня есть пустой дочерний элемент для обоих игроков, который является триггерным коллайдером. Однако, когда я помечаю один, срабатывает и другой триггер. Должен ли у меня быть только один триггер? И если да, то как бы я это сделал?

Спасибо

Ответ №1:

как только вы пометите плеер SetActive (false), пустой активируется примерно на 1 секунду или около того. Если бы у вас была кнопка, которая при каждом нажатии меняет значение с true на false, а значение false на true, если вы нажмете и будете удерживать эту кнопку, она будет «мерцать» взад и вперед между true и false. Вот что происходит с вашими игроками: спусковой крючок постоянно нажимается, когда вы прикасаетесь, поэтому сделайте его неактивным достаточно долго, чтобы вы больше не прикасались. Я надеюсь, что это имеет смысл.