Сначала введу в курс дела. (Значения переменных не имеют смысла, так проще для понимания)
public class Calculateheal : MonoBehaviour
{
private int InHome = 5;
public void SetLocationHome (int IsHome) //Метод, который используется в классе OnTriggerHome для
//установки значения переменной InHome
{
InHome = IsHome;
Debug.Log(InHome); //стандартная функция Unity, чтобы выводить значения в консоль Unity.
}
private void FixedUpdate() //Стандартная функция, которая срабатывает определенное кол-во раз в сек
{
InHome += 1; //прибавляем просто чтобы значение изменялось
if (InHome > 100)
{
Debug.Log("Warm");
Debug.Log(InHome); //выводим в консоль значение (Тут еще стоит точка останова)
}
}
}
public class OnTriggerHome : MonoBehaviour
{
public GameObject Hero; //экземпляр объекта, большой роли в моей проблеме он не играет(наверное)
private void OnTriggerEnter2D(Collider2D collision)//метод юнити, который срабатывает, когда входят в
//область
{
Calculateheal inHome = Hero.GetComponent<Calculateheal>(); //создаем компонент класса
inHome.SetLocationHome(1); //вызываем функцию, которая устанавливает значение
}
private void OnTriggerExit2D(Collider2D other)//метод юнити, который срабатывает, когда выходят из
//область
{
Calculateheal inHome = Hero.GetComponent<Calculateheal>(); //создаем компонент класса
inHome.SetLocationHome(25); //вызываем функцию, которая устанавливает значение
}
}
Проблема такая: Сначала все идет нормально: переменная InHome увеличивается на 1. Но, когда игрок заходит в область(срабатывает метод OnTriggerEnter2D в классе OnTriggerHome, который вызывает метод SetLocationHome) у переменной InHome появляется второе значение, которое чередуется из шага в шаг(Шаг - это когда 1 раз срабатывает метод FixedUpdate). Поясню. Когда я дебажил код наблюдал такое:
1 шаг: InHome = 126(допустим, не имеет большого смысла)
2 шаг: InHome = 101
3 шаг: InHome = 127
4 шаг: InHome = 102
5 шаг: InHome = 128
6 шаг: InHome = 103
И т.д.
Когда я использовал переменную типа bool, то она чередовала значение между true и false. Если переменную не изменять в методе FixedUpdate, то она чередует значения между изначальным значением(значением, с которым ее создали) и значением, которая она получила в методе SetLocationHome.
Если я правильно понял то у вас нету условия проверки тега, и поэтому когда вы прикасаете к любому коллайдеру то пропуск шагов будет достаточно многовато.
private void OnTriggerEnter2D(Collider2D collision)
{
if(collision.transform.tag == "My Tag")
{
Calculateheal inHome = Hero.GetComponent<Calculateheal>();
inHome.SetLocationHome(1);
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
С какой частотой будет обновляться метод в юнити, если его не вывести в FixedUpdate() и Update()
Я пытаюсь получить изображение из postgresql с помощью C #
Изначально, я шёл сюда за ответом на вопрос "NET 5 не видит SqlConnection"
Хочу написать бота, с разным функционалом, для своих нужд для SteamОдна из функций это спам в этот Топик