private void Update() { if (!m_ped.IsControlledByLocalPlayer) { return; } if (!Loader.HasLoaded) { return; } // reset ped input m_ped.ResetMovementInput(); m_ped.MouseMoveInput = Vector2.zero; m_ped.MouseScrollInput = Vector2.zero; if (!GameManager.CanPlayerReadInput()) { return; } // states must be read before events, otherwise callback functions for events will not have access // to states (they will always be unpressed/reset, because we did a reset above) this.ReadStates(); this.ReadEvents(); }
private void Update() { if (Input.GetKeyDown(KeyCode.F9)) { _showVel = !_showVel; } if (!Loader.HasLoaded) { return; } // reset player input m_ped.ResetMovementInput(); if (!m_ped.enableFlying && !m_ped.IsInVehicle && Input.GetKeyDown(KeyCode.T)) { m_ped.enableFlying = true; m_ped.Movement = new Vector3(0f, 0f, 0f); // disable current movement PlayerModel.PlayAnim(AnimGroup.WalkCycle, AnimIndex.RoadCross, PlayMode.StopAll); // play 'flying' animation } else if (m_ped.enableFlying && Input.GetKeyDown(KeyCode.T)) { m_ped.enableFlying = false; } if (!m_ped.IsInVehicle && Input.GetKeyDown(KeyCode.R)) { m_ped.enableNoclip = !m_ped.enableNoclip; m_ped.characterController.detectCollisions = !m_ped.enableNoclip; if (m_ped.enableNoclip && !m_ped.enableFlying) { m_ped.Movement = new Vector3(0f, 0f, 0f); // disable current movement PlayerModel.PlayAnim(AnimGroup.WalkCycle, AnimIndex.RoadCross, PlayMode.StopAll); // play 'flying' animation } } this.UpdateCamera(); if (!GameManager.CanPlayerReadInput()) { return; } if (Input.GetButtonDown("Use") && m_ped.IsInVehicle) { m_ped.ExitVehicle(); return; } if (m_ped.IsInVehicle) { return; } if (m_ped.enableFlying || m_ped.enableNoclip) { var up_down = 0.0f; if (Input.GetKey(KeyCode.Backspace)) { up_down = 1.0f; } else if (Input.GetKey(KeyCode.Delete)) { up_down = -1.0f; } var inputMove = new Vector3(Input.GetAxis("Horizontal"), up_down, Input.GetAxis("Vertical")); m_ped.Movement = Vector3.Scale(Camera.transform.TransformVector(inputMove), new Vector3(1f, 1f, 1f)).normalized; m_ped.Movement *= 10.0f; if (Input.GetKey(KeyCode.LeftShift)) { m_ped.Movement *= 10.0f; } else if (Input.GetKey(KeyCode.Z)) { m_ped.Movement *= 100.0f; } return; } m_ped.WeaponHolder.IsAimOn = m_ped.WeaponHolder.IsHoldingWeapon && Input.GetMouseButton(1); m_ped.WeaponHolder.IsFireOn = m_ped.WeaponHolder.IsHoldingWeapon && Input.GetMouseButton(0); //if (!_player.WeaponHolder.IsAimOn) { // give input to player m_ped.IsJumpOn = Input.GetKey(m_jumpKey); Vector3 inputMove = Vector3.zero; if (m_smoothMovement) { inputMove = new Vector3(Input.GetAxis("Horizontal"), 0f, Input.GetAxis("Vertical")); } else { inputMove = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical")); } if (inputMove.sqrMagnitude > 0f) { inputMove.Normalize(); if (Input.GetKey(m_walkKey)) { m_ped.IsWalking = true; } else if (Input.GetKey(m_sprintKey)) { m_ped.IsSprinting = true; } else { m_ped.IsRunning = true; } } m_ped.Movement = Vector3.Scale(Camera.transform.TransformVector(inputMove), new Vector3(1f, 0f, 1f)).normalized; // player heading should be assigned here, not in Player class // if (!_player.IsAiming) { if (m_ped.Movement.sqrMagnitude > float.Epsilon) { m_ped.Heading = m_ped.Movement; } } } if (!Input.GetButtonDown("Use")) { return; } // find any vehicles that have a seat inside the checking radius and sort by closest seat var vehicles = FindObjectsOfType <Vehicle>() .Where(x => Vector3.Distance(transform.position, x.FindClosestSeatTransform(transform.position).position) < EnterVehicleRadius) .OrderBy(x => Vector3.Distance(transform.position, x.FindClosestSeatTransform(transform.position).position)).ToArray(); foreach (var vehicle in vehicles) { var seat = vehicle.FindClosestSeat(transform.position); m_ped.EnterVehicle(vehicle, seat); break; } }