У меня есть пшеница, при ее срубании отсчитывается время до ее появления (2 секунды) при этом идет проверка, что если воды меньше или ровно 0 то пшеница не вырастает. this.GetComponent().color = colTwo; это я возвращаю пшенице 100 процентов прозрачности (я не дестрою пшеницы, а делаю их невидимыми, да я даун но мне так нужно сейчас).
Так вот, если медленно срубать по одной пшеницу, то все работает и если воды не хватает то пшеница не растет. Но если срубить много пшеницы за 1 секунду, то юнити не успевает проверить воду, и даже если её меньше, чем надо то пшеница все равно успевает вернуть 100 процентную прозрачность. Как это исправить?
Вот мой код:
using System.Collections;
using UnityEngine;
public class GotWheat : MonoBehaviour
{
#region Variables
public Color col;
public Color colTwo;
private bool isAlive = true;
static public float timeToGrowUp = 2f;
private int a = 0;
static public int b = 0;
#endregion
#region UnityMethods
void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.tag == "Cursor" && Input.GetKey(KeyCode.Mouse0))
{
if (isAlive)
{
StartCoroutine(timeToReincornation());
this.GetComponent<SpriteRenderer>().color = col;
AmmountThings._Ammount++;
isAlive = false;
}
}
}
IEnumerator timeToReincornation()
{
while (a==0)
{
if (WaterSense.currentWater > 0)
{
yield return new WaitForSeconds(timeToGrowUp);
a = 1;
isAlive = true;
this.GetComponent<SpriteRenderer>().color = colTwo;
WaterSense.currentWater-=0.125f;
}
yield return new WaitForEndOfFrame();
}
a = 0;
}
#endregion
}