private void FetchInput() { // Move Forward if (PlayerControl.INPUT_FORWARD && !mLockBtnInput) { // move forward move(true); mLockBtnInput = true; } else if (PlayerControl.INPUT_BACKWARD && !mLockBtnInput) { // move backward move(false); mLockBtnInput = true; } else if (PlayerControl.INPUT_LEFT && !mLockBtnInput) { // turn left turn(false); mLockBtnInput = true; } else if (PlayerControl.INPUT_RIGHT && !mLockBtnInput) { // turn right turn(true); mLockBtnInput = true; } else { // release lock mLockBtnInput = false; } // Fetch Mouse Input if (PlayerControl.INPUT_LMBCLICKED && !mLockMouseInput) { Ray rayMousePos = mPlayerCamera.ScreenPointToRay(Input.mousePosition); RaycastHit rayHit; if (Physics.Raycast(rayMousePos, out rayHit)) { // get a usable component MonoBehaviour[] components = rayHit.transform.GetComponents <MonoBehaviour>(); Usable tempUsable = null; foreach (MonoBehaviour component in components) { tempUsable = component as Usable; if (tempUsable != null) { break; } } if (tempUsable != null) { tempUsable.OnUse(); } } //mLockMouseInput = true; } else { mLockMouseInput = false; } }