void GetInputAndMove() { bool left = Input.GetKey(KeyCode.LeftArrow); bool right = Input.GetKey(KeyCode.RightArrow); bool up = Input.GetKey(KeyCode.UpArrow) && ladderUp; bool down = Input.GetKey(KeyCode.DownArrow) && ladderDown; bool dig = Input.GetKey(KeyCode.D); bool fill = Input.GetKey(KeyCode.F); if (transform.position.y <= lowestGirder) { dig = false; // cannot dig on the lowest girder } float hSpeed = 0; float vSpeed = 0; if (left) { hSpeed -= normalSpeed; } if (right) { hSpeed += normalSpeed; } if (up) { vSpeed += normalSpeed; } if (down) { vSpeed -= normalSpeed; } if (!onGround) { vSpeed -= fallSpeed; } if (ladderUp && vSpeed < 0 && transform.position.y < lowestGirder) { vSpeed = 0; } if (hSpeed < 0) { transform.localScale = new Vector3(-2f, 2f, 1); } if (hSpeed > 0) { transform.localScale = new Vector3(2f, 2f, 1); } if ((dig | fill) && onGround) { hSpeed = 0; vSpeed = 0; } if (dig) { if (hole == null) { hole = HoleScript.StartDig(diggerPositionX, transform.position.y); } else { hole.GetComponent <HoleScript>().PlayerDig(); } } else if (fill) { if (hole == null) { hole = HoleScript.FindHole(diggerPositionX, transform.position.y); if (hole != null) { hole.GetComponent <HoleScript>().StartFill(); } } else { hole.GetComponent <HoleScript>().PlayerFill(); } } if (hole != null) { digger.SetActive(true); } else { digger.SetActive(false); } rb.velocity = new Vector3(hSpeed, vSpeed, 0); }