У меня есть несколько статов, прикрепленных к объектам, которые со временем укорачиваются.Если ПК сталкивается с объектом, вместо этого индикаторная строка должна неуклонно увеличиваться в длине.
Вместо этого планка удлиняется в полной мере и не начинает сокращаться до тех пор, покаПК взаимодействует с другим объектом стат-бара;в этот момент столбец возвращается к длине, которой он был ранее.
Это код последовательности баров:
void Update() {
if (contact) {
Increase();
Debug.Log("increasing");
} else if (contact == false) {
Decrease();
Debug.Log("decreasing");
}
}
void Decrease() {
if (filled > 0) {
filled -= 0.006f;
timerBar.fillAmount = filled / maxTime;
}
}
void Increase() {
if (filled < maxTime) {
timerBar.fillAmount = (filled += 0.006f);
}
}
В отдельном скрипте я сохраняюусловия для определения «контакта».
void OnCollisionEnter2D(Collision2D collision) {
if (collision.gameObject.tag == "Player") {
barProg.contact = true;
Debug.Log("is touching");
}
}
void OnCollisionExit2D(Collision2D collision) {
if (collision.gameObject.tag == "Player") {
barProg.contact = false;
Debug.Log("is not touching");
}
}
Вот изображения, относящиеся к приложениям и коллайдерам скрипта:
«yellowBar (progBar)» и т. д. относятся к скриптам, прикрепленным к холст-изображениям панелей статистики.Таким образом, маленькая желтая истощающая линия (строка состояния) - это «yellowBar», и она ссылается на скрипт, прикрепленный к отдельной строке статистики (progBar).
Показанный ниже пример того, о чем я говорю.Я пополняю синюю полосу, и в этот момент она остается прежней, пока не ухожу, чтобы заполнить желтую полосу, после чего синяя полоса возвращается к той величине, которая была, когда я ее наполнял.