Answer the question
In order to leave comments, you need to log in
Why can't I do the action again?
I am new to Unity. The game has the ability, so to speak, to bite off trees, carry them and throw them. Android game. I have a problem. Everything works well until I drop the tree. After this action, I cannot "bite off" a new one. Please tell me what could be the problem and how it can be solved. I commented all the code as clearly as I could:
using UnityEngine;
using UnityEngine.UI;
[RequireComponent(typeof(Rigidbody))]
public class Bite : MonoBehaviour
{
public BoxCollider up; // Box Collider на голове модельки персонажа
public Animator player_animator; // Аниматор для персонажа
public Transform playerTreePoint; // Точка к которой цепляються деревья
public Button biteButton; // Кнопка "Кусать"
public Button dropButton; // Кнопка "Бросить"
public GameObject dropButtonForEnabled; // Кнопка "Бросить" для отключения
public GameObject biteButtonForEnabled; // Кнопка "Кусать" для отключения
private float startTime = 0; // Время начала таймера
public float endTime; // Время конца таймера
private bool animationTimeLeft = false; // Анимация укуса закончилась
public bool treeInThePoint = false; // Прикрепить дерево к точке на персонаже
public bool biteTree = false; // Персонаж возле дерева
private bool biteKlick = false; // Нажата кнопка "Кусать"
private Collider tree; // ???
void BiteTaskOnClick() // Кнопка "Кусать" нажата
{
biteKlick = true;
}
void DropTaskOnClick() // Кнопка "Бросить" нажата
{
treeInThePoint = false;
up.enabled = false;
biteTree = false;
dropButtonForEnabled.SetActive(false);
biteButtonForEnabled.SetActive(true);
}
void Start() // Вызывается при старте
{
dropButtonForEnabled.SetActive(false); // Отключение кнопки бросить
up = GetComponent<BoxCollider>(); // Делаем Box Collider up бокс колайдером для скрипта
Button btn = biteButton.GetComponent<Button>(); // Делает кнопку "Кусать" кнопкой для скрипта
btn.onClick.AddListener(BiteTaskOnClick); // Обрабатывает нажатие кнопки "Кусать"
Button dbtn = dropButton.GetComponent<Button>(); // Делает кнопку "Бросить" кнопкой для скрипта
dbtn.onClick.AddListener(DropTaskOnClick); // Обрабатывает нажатие кнопки "Бросить"
}
void OnTriggerEnter(Collider other) // Вызывается если игрок тронет что - то
{
// Проверяет, что игрок трогает
if (other.gameObject.name == "Terrain")
{ }
else
{
tree = other;
biteTree = true;
}
}
private void OnTriggerExit(Collider other) // Вызываеться если персонаж отходит от дерева
{
biteTree = false;
}
void FixedUpdate() // Вызывается всё время
{
if (biteTree == true && biteKlick == true) // Если персонаж возле дерева и нажал на кнопку "Кусать"
{
treeInThePoint = true; // Прикрепить дерево к точке на персонаже
}
if (treeInThePoint == true) // Была команда прикрепить дерево к точку на персонаже?
{
biteButtonForEnabled.SetActive(false); // Выключение кнопки "Кусать"
if (animationTimeLeft == true) // Запускаеться если анимация укуса закончится
{
tree.gameObject.transform.position = playerTreePoint.position; // Прикрепляет дерево к точке на персонаже
}
up.enabled = false; // Выключает Box Collider персонажу, что бы он не подбирал другие деревья
dropButtonForEnabled.SetActive(true); // Включение кнопки "Бросить"
}
if (biteKlick == true) // Проверка нажата ли кнопка "Кусать"
{
player_animator.SetBool("Bite On", true); // Включает анимацию укуса
animationTimeLeft = false; // "Время анимации не закончено"
startTime += 0.01f * Time.deltaTime; // Запуск таймера для анимации
if (startTime >= endTime) // Проверка, время прошло?
{
animationTimeLeft = true; // Анимаци закончилась
player_animator.SetBool("Bite On", false); // Выключает анимацию
biteKlick = false; // Говорит, что кнопка "Кусать" не нажата
startTime = 0; // Сбрасывает таймер
}
}
}
}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question