public override void _Process(float delta) { InputFlags = InputMoveFlags.None; ProcessMovement(delta); ProcessUseRay(delta); base._Process(delta); }
protected virtual void ProcessMovement(float delta) { if (Input.IsActionPressed("move_forward")) { InputFlags |= InputMoveFlags.Move_Forward; } else if (Input.IsActionPressed("move_backward")) { InputFlags |= InputMoveFlags.Move_Backward; } if (Input.IsActionPressed("strafe")) { InputFlags |= InputMoveFlags.Strafe; } if (Input.IsActionPressed("turn_left")) { InputFlags |= InputMoveFlags.Turn_Left; } else if (Input.IsActionPressed("turn_right")) { InputFlags |= InputMoveFlags.Turn_Right; } if (!InputFlags.HasFlag(InputMoveFlags.Strafe)) { float yaw = 0.0f; if (InputFlags.HasFlag(InputMoveFlags.Turn_Left)) { yaw = 1.0f; } else if (InputFlags.HasFlag(InputMoveFlags.Turn_Right)) { yaw = -1.0f; } _camera.Transform = _camera.Transform.Rotated(Vector3.Up, yaw * _turnSpeed * delta); } }