/// <summary> /// Handles checks for new controllers /// </summary> public static void Update() { // Check each possible key code in the system for a pressed key/button foreach (KeyCode PressedKeyCode in System.Enum.GetValues(typeof(KeyCode))) { // We only care about pressed keys if (!Input.GetKeyDown(PressedKeyCode)) { continue; } // Check if the input belongs to a controller KeyCodeHandler HandledKeyCode = new KeyCodeHandler(PressedKeyCode.ToString()); if (!HandledKeyCode.IsJoystickInput()) { continue; } // Grab the controller number string ControllerID = HandledKeyCode.GetJoystickNumber(); // If the input is good then we need to register a controller if we have // not already if (!IsControllerRegistered(ControllerID)) { RegisterController(ControllerID); } } }
private void OnKeyPressed(PressedKeyCode[] obj) { float tempY = 0; float tempX = 0; // stable forward if (hMove.y > 0) tempY = - Time.fixedDeltaTime; else if (hMove.y < 0) tempY = Time.fixedDeltaTime; // stable lurn if (hMove.x > 0) tempX = -Time.fixedDeltaTime; else if (hMove.x < 0) tempX = Time.fixedDeltaTime; foreach (var pressedKeyCode in obj) { switch (pressedKeyCode) { case PressedKeyCode.SpeedUpPressed: EngineForce += 0.1f; break; case PressedKeyCode.SpeedDownPressed: EngineForce -= 0.12f; if (EngineForce < 0) EngineForce = 0; break; case PressedKeyCode.ForwardPressed: if (IsOnGround) break; tempY = Time.fixedDeltaTime; break; case PressedKeyCode.BackPressed: if (IsOnGround) break; tempY = -Time.fixedDeltaTime; break; case PressedKeyCode.LeftPressed: if (IsOnGround) break; tempX = -Time.fixedDeltaTime; break; case PressedKeyCode.RightPressed: if (IsOnGround) break; tempX = Time.fixedDeltaTime; break; case PressedKeyCode.TurnRightPressed: { if (IsOnGround) break; var force = (turnForcePercent - Mathf.Abs(hMove.y))*HelicopterModel.mass; HelicopterModel.AddRelativeTorque(0f, force, 0); } break; case PressedKeyCode.TurnLeftPressed: { if (IsOnGround) break; var force = -(turnForcePercent - Mathf.Abs(hMove.y))*HelicopterModel.mass; HelicopterModel.AddRelativeTorque(0f, force, 0); } break; } } hMove.x += tempX; hMove.x = Mathf.Clamp(hMove.x, -1, 1); hMove.y += tempY; hMove.y = Mathf.Clamp(hMove.y, -1, 1); }