public Button BTN;
public float btnDelay = .5f;
this, чтобы получить ссылку на кнопку и указать продолжительность
coroutine = ButtonDelayed(btnDelay);
StartCoroutine(coroutine);
this после вызова Jump();
в своем обновлении или в Jump()
IEnumerator ButtonDelayed(float delay)
{
BTN.interactable = false;
yield return new WaitForSeconds(delay);
BTN.interactable = !BTN.interactable;
}
this где-то. Просто быстрый макет. Не уверен, получится ли исключение. Если у вас возникла проблема, просто свяжитесь со мной.
РЕДАКТИРОВАТЬ: Я забыл сказать вам изменить цвет отключенного состояния в инспекторе на цвет, который у вас есть при взаимодействии с кнопкой. В противном случае вы увидите, что кнопка меняет цвета.
EDIT2: обновлен полный скрипт
public float downForce;
public float speed;
public int playerHp;
public Text healthText;
Rigidbody2D rb;
CharacterController controller;
public Button BTN;
public float btnDelay = .5f;
void Awake()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
healthText.text = playerHp.ToString();
if (Input.GetMouseButtonDown(0))
{
Jump();
}
if (playerHp < 0)
{
Destroy(this.gameObject);
SceneManager.LoadScene("GameOver");
}
}
public void Jump()
{
coroutine = ButtonDelayed(btnDelay);
StartCoroutine(coroutine);
rb.AddForce(Vector2.up * downForce + Vector2.right * speed,
ForceMode2D.Impulse);
rb.isKinematic = false;
}
IEnumerator ButtonDelayed(float delay)
{
BTN.interactable = false;
yield return new WaitForSeconds(delay);
BTN.interactable = !BTN.interactable;
}