Ok, first of all, hello to anyone that may come across this question, hope that you have luck in your search quest
Now, here is my problem. I have an attack function that i want to be called when the user presses the shift key, i want this function to run as long as an “attack charge” value is bigger then 0. So i created a loop, and that crashed Unity. I then heard about Ienumerators and that you should use them to slow down the loop so that it does not crash and run everything on the same frame.
So i tried that, and it did not work. For convinience sake, i created a private int called “test” and used that as a test variable. And it still crashed Unity, i tried with GetKey and GetKeyDown, but with no luck. Therefore, i am posting my first question here!
Please do not hesitate to ask if you need more context to my question
(Sorry for bad english or, somewhat, messy code. Or if this has been posted before)
Here is the entire code that (i think) gives me trouble, i removed all the unnessessary code, but if you need the entire code, then please let me know:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class PlayerAttack : MonoBehaviour
{
private int test;
// Start is called before the first frame update
void Start()
{
test = 5;
}
// Update is called once per frame
void FixedUpdate()
{
if (Input.GetKeyDown(KeyCode.LeftShift))
{
do
{
Debug.Log(test);
StartCoroutine(attackWait());
} while (test > 0);
}
}
private IEnumerator attackWait()
{
yield return new WaitForSecondsRealtime(3);
Attack();
}
void Attack()
{
test--;
}
}