- Home /
Question by
ludwu · Jun 20, 2018 at 11:05 AM ·
time.deltatimeinput.getkeyholdinput.getbutton
How to hold button/key at a right timing
Hi ! Got a rythm game I try to make, and got a problem with duration's note. I would like my note to be hit at the right time, and for a precised duration. For now and for example even though i know this code is wrong, this is my code :
public void SetCountBarsText()
{
Count4_4 += Time.deltaTime;
if (Count4_4 >= 5) // 4/4 Bars
{
Count4_4 = 1;
Bars++;
}
TempoText.text = "Tempo : " + Count4_4.ToString("0.0") + " | Bars : " + Bars.ToString("0");
}
void Update() {
SetCountBarsText();
if (Input.GetKeyDown(KeyCode.Y) && Count4_4 >= 4.8 && ButtonHeld == false || Input.GetKeyDown(KeyCode.Y) && Count4_4 <= 1.2 && ButtonHeld == false)
{
ButtonHeld = true;
}
if (Input.GetKeyUp(KeyCode.Y) && Count4_4 >= 4.00 && ButtonHeld == true || Input.GetKeyUp(KeyCode.Y) && Count4_4 <= 4.90 && ButtonHeld == true)
{
ButtonHeld = false;
if (NotesList[0].transform.position.y == -0.306f)
{
Destroy (NotesList[0].gameObject);
NotesList.RemoveAt(0);
Score += 10;
SetScoreText ();
}
else if (NotesList[0].transform.position.y != -0.306f)
{
Score -= 20;
SetScoreText ();
}
}
}
But for now, and as logical, the note is destroyed just between 4.8 & 4.9. I tried many things, but didnt find how to deal with it :(
Comment
Best Answer
Answer by ludwu · Jun 20, 2018 at 03:07 PM
I finally managed to do it like this :
void Update()
{
DownTimeButton += Time.deltaTime;
if (DownTimeButton >= 5)
{
DownTimeButton = 1;
}
UpTimeButton += Time.deltaTime;
if (UpTimeButton >= 5)
{
UpTimeButton = 1;
}
if (NotesList[0] == WholeNotes)
{
if (Input.GetKeyDown(KeyCode.Y) && DownTimeButton <= 1.2 || Input.GetKeyDown(KeyCode.Y) && DownTimeButton >= 4.8) //A Note
{
Debug.Log("Key Is Down");
/* if (Input.GetKey (KeyCode.Y))
{
ButtonHeld = true;
} */
}
else if (Input.GetKeyDown(KeyCode.Y) && DownTimeButton >= 1.21 && DownTimeButton <= 4.79) //A Note
{
Debug.Log("Wrong Down Timing");
//Debug.Break();
Score -= 20;
SetScoreText ();
}
if (Input.GetKeyUp(KeyCode.Y) && UpTimeButton <= 1.2 || Input.GetKeyUp(KeyCode.Y) && UpTimeButton >= 4.7)
{
Debug.Log("Key Is Up");
if (NotesList[0].transform.position.y == -0.306f)
{
Destroy (NotesList[0].gameObject);
NotesList.RemoveAt(0);
Score += 10;
SetScoreText ();
Debug.Log ("note killed");
}
else if (NotesList[0].transform.position.y != -0.306f)
{
Score -= 20;
SetScoreText ();
}
}
else if (Input.GetKeyUp(KeyCode.Y) && UpTimeButton >= 1.21 || Input.GetKeyUp(KeyCode.Y) && UpTimeButton <= 4.69)
{
Debug.Log("Wrong Up Timing");
}
}
}