#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. Вот что происходит с вашими игроками: спусковой крючок постоянно нажимается, когда вы прикасаетесь, поэтому сделайте его неактивным достаточно долго, чтобы вы больше не прикасались. Я надеюсь, что это имеет смысл.