Problem with getkeyup,GetKeyUp doesnt work sometimes
So when pressing one key, lets say "A", then pressing another one, lets say "D" and keeping "A" pressed, when i then release "D", getkeyup for that doesnt get fired, i need help
void Update()
{
if (Input.GetKeyUp(KeyCode.W) && moveDirection.z != 0) {
stopw = true;
}
if (Input.GetKeyUp(KeyCode.S) && moveDirection.z != 0) {
stops = true;
}
if (Input.GetKeyUp(KeyCode.A) && moveDirection.x != 0) {
stopa = true;
}
if (Input.GetKeyUp(KeyCode.D) && moveDirection.x != 0) {
Debug.Log("d up");
stopd = true;
}
if (c.isGrounded)
{
if (stopw) {
moveDirection -= transform.forward * speed;
stopw = false;
}
if (stops) {
moveDirection += transform.forward * speed;
stops = false;
}
if (stopa) {
moveDirection += transform.right * speed;
stopa = false;
}
if (stopd) {
moveDirection -= transform.right * speed;
stopd = false;
}
// We are grounded, so recalculate
// move direction directly from axes
if (Input.GetKeyDown(KeyCode.W)) {
moveDirection += transform.forward * speed;
}
if (Input.GetKeyDown(KeyCode.S)) {
moveDirection -= transform.forward * speed;
}
if (Input.GetKeyDown(KeyCode.A)) {
moveDirection -= transform.right * speed;
Debug.Log("a down");
}
if (Input.GetKeyDown(KeyCode.D)) {
moveDirection += transform.right * speed;
Debug.Log("d down");
}
,i know there are lot of questions about getkeyup, but i havent seen mz problem anywhere. So when i press one key, lets say a, then press another, lets say b, and then release b, getkeyup for b doesnt get fired.`void Update() {
if (Input.GetKeyUp(KeyCode.W) && moveDirection.z != 0) {
stopw = true;
}
if (Input.GetKeyUp(KeyCode.S) && moveDirection.z != 0) {
stops = true;
}
if (Input.GetKeyUp(KeyCode.A) && moveDirection.x != 0) {
stopa = true;
}
if (Input.GetKeyUp(KeyCode.D) && moveDirection.x != 0) {
Debug.Log("d up");
stopd = true;
}
if (c.isGrounded)
{
if (stopw) {
moveDirection -= transform.forward * speed;
stopw = false;
}
if (stops) {
moveDirection += transform.forward * speed;
stops = false;
}
if (stopa) {
moveDirection += transform.right * speed;
stopa = false;
}
if (stopd) {
moveDirection -= transform.right * speed;
stopd = false;
}
// We are grounded, so recalculate
// move direction directly from axes
if (Input.GetKeyDown(KeyCode.W)) {
moveDirection += transform.forward * speed;
}
if (Input.GetKeyDown(KeyCode.S)) {
moveDirection -= transform.forward * speed;
}
if (Input.GetKeyDown(KeyCode.A)) {
moveDirection -= transform.right * speed;
Debug.Log("a down");
}
if (Input.GetKeyDown(KeyCode.D)) {
moveDirection += transform.right * speed;
Debug.Log("d down");
}`
Answer by Jan-Vrabel · Dec 16, 2020 at 12:13 PM
I am facing to the similar problem when GetkeyUp is not called. Reproducing is not for 100%, but it happens when I am pressing more than one key in time and the second key pressing/releasing quite fast. Didnt find solution yet. I am calling GetKeyUp in LateUpdate (what should be ok). Unity version 2020.1.8f1. OS: Mac OS