Wie macht man in Unity (C#) wenn eine Taste gedrückt und gehalten wird?
Moin!
Ich würde es so machen:
if (Input.GetKeyDown(KeyCode.Space))
{
gameObject.GetComponent<Rigidbody2D>().gravityScale = 1.5f;
if (CanJump == true && jumpArt == "standart")
{
JumpSpeed = 15;
Jump = true;
}
}
if (Input.GetKey(KeyCode.Space))
{
jumpArt = "Long";
if (CanJump == true)
{
JumpSpeed = 25;
Jump = true;
gameObject.GetComponent<Rigidbody2D>().gravityScale = 0.75f;
}
}
if (Jump == true)
{
transform.Translate(0, JumpSpeed * 0.004f, 0);
if (JumpSpeed != 0)
{
JumpSpeed -= 0.25f;
}
else
{
Jump = false;
}
}
Aber logischerweise springt er immer hoch, weil
Input.GetKey(KeyCode.Space))
auch für den Frame
Input.GetKeyDown(KeyCode.Space))
Wie kann ich das beheben?
Ich habe es schon mit Invoke("", ) versucht. Aber der wartet lange.