private void Update() { // FPS counting fpsDeltaTime += (Time.deltaTime - fpsDeltaTime) * 0.1f; if (Input.GetKeyDown(KeyCode.F10)) { _showFPS = !_showFPS; } if (Input.GetKeyDown(KeyCode.F9)) { _showVel = !_showVel; } if (!Loader.HasLoaded) { return; } if (!_player.enableFlying && !_player.IsInVehicle && Input.GetKeyDown(KeyCode.T)) { _player.enableFlying = true; _player.Movement = new Vector3(0f, 0f, 0f); // disable current movement PlayerModel.PlayAnim(AnimGroup.WalkCycle, AnimIndex.RoadCross, PlayMode.StopAll); // play 'flying' animation } else if (_player.enableFlying && Input.GetKeyDown(KeyCode.T)) { _player.enableFlying = false; } if (!_player.IsInVehicle && Input.GetKeyDown(KeyCode.R)) { _player.enableNoclip = !_player.enableNoclip; _player.characterController.detectCollisions = !_player.enableNoclip; if (_player.enableNoclip && !_player.enableFlying) { _player.Movement = new Vector3(0f, 0f, 0f); // disable current movement PlayerModel.PlayAnim(AnimGroup.WalkCycle, AnimIndex.RoadCross, PlayMode.StopAll); // play 'flying' animation } } // Fix cursor state if it has been 'broken', happens eg. with zoom gestures in the editor in macOS if (CursorLocked && ((Cursor.lockState != CursorLockMode.Locked) || (Cursor.visible))) { Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; } if (Input.GetKeyDown(KeyCode.F1)) { _showMenu = !_showMenu; } bool isConsoleStateChanged = Console.Instance.m_openKey != Console.Instance.m_closeKey ? Input.GetKeyDown(Console.Instance.m_openKey) || Input.GetKeyDown(Console.Instance.m_closeKey) : Input.GetKeyDown(Console.Instance.m_openKey); if (!_showMenu && (Input.GetKeyDown(KeyCode.Escape) || isConsoleStateChanged || Input.GetKeyDown(KeyCode.F1))) { ChangeCursorState(!CursorLocked); } if (CursorLocked) { var cursorDelta = new Vector2(Input.GetAxisRaw("Mouse X"), Input.GetAxisRaw("Mouse Y")); Yaw += cursorDelta.x * CursorSensitivity.x; Pitch -= cursorDelta.y * CursorSensitivity.y; } Camera.transform.rotation = Quaternion.AngleAxis(Yaw, Vector3.up) * Quaternion.AngleAxis(Pitch, Vector3.right); float distance; Vector3 castFrom; float scrollValue = Input.mouseScrollDelta.y; if (Console.Instance.IsOpened) { scrollValue = 0; } if (_player.IsInVehicle) { CarCameraDistance = Mathf.Clamp(CarCameraDistance - scrollValue, 2.0f, 32.0f); distance = CarCameraDistance; castFrom = _player.CurrentVehicle.transform.position; } else { PlayerCameraDistance = Mathf.Clamp(PlayerCameraDistance - scrollValue, 2.0f, 32.0f); distance = PlayerCameraDistance; castFrom = transform.position + Vector3.up * .5f; } var castRay = new Ray(castFrom, -Camera.transform.forward); RaycastHit hitInfo; if (Physics.SphereCast(castRay, 0.25f, out hitInfo, distance, -1 ^ (1 << MapObject.BreakableLayer) ^ (1 << Vehicle.Layer))) { distance = hitInfo.distance; } Camera.transform.position = castRay.GetPoint(distance); if (!CursorLocked) { return; } if (Input.GetButtonDown("Use") && _player.IsInVehicle) { _player.ExitVehicle(); return; } if (_player.IsInVehicle) { return; } if (_player.enableFlying || _player.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")); _player.Movement = Vector3.Scale(Camera.transform.TransformVector(inputMove), new Vector3(1f, 1f, 1f)).normalized; _player.Movement *= 10.0f; if (Input.GetKey(KeyCode.LeftShift)) { _player.Movement *= 10.0f; } else if (Input.GetKey(KeyCode.Z)) { _player.Movement *= 100.0f; } return; } if (_player.currentWeaponSlot > 0 && Input.GetMouseButton(1)) { // right click is on // aim with weapon // this.Play2Animations (new int[]{ 41, 51 }, new int[]{ 2 }, AnimGroup.MyWalkCycle, // AnimGroup.MyWalkCycle, AnimIndex.IdleArmed, AnimIndex.GUN_STAND); PlayerModel.PlayAnim(AnimGroup.MyWalkCycle, AnimIndex.GUN_STAND, PlayMode.StopAll); } else { var inputMove = new Vector3(Input.GetAxis("Horizontal"), 0f, Input.GetAxis("Vertical")); if (inputMove.sqrMagnitude > 0f) { inputMove.Normalize(); if (Input.GetKey(KeyCode.LeftShift)) { if (_player.currentWeaponSlot > 0) { // player is holding a weapon Play2Animations(new int[] { 41, 51 }, new int[] { 2 }, AnimGroup.WalkCycle, AnimGroup.MyWalkCycle, AnimIndex.Run, AnimIndex.IdleArmed); } else { // player is not holding a weapon PlayerModel.PlayAnim(AnimGroup.WalkCycle, AnimIndex.Run, PlayMode.StopAll); } // PlayerModel.Running = true; } else { // player is walking if (_player.currentWeaponSlot > 0) { Play2Animations(new int[] { 41, 51 }, new int[] { 2 }, AnimGroup.WalkCycle, AnimGroup.MyWalkCycle, AnimIndex.Walk, AnimIndex.IdleArmed); } else { PlayerModel.PlayAnim(AnimGroup.WalkCycle, AnimIndex.Walk, PlayMode.StopAll); } // PlayerModel.Walking = true; } } else { // player is standing if (_player.currentWeaponSlot > 0) { Play2Animations(new int[] { 41, 51 }, new int[] { 2 }, AnimGroup.MyWalkCycle, AnimGroup.MyWalkCycle, AnimIndex.IdleArmed, AnimIndex.IdleArmed); // PlayerModel.PlayAnim (AnimGroup.MyWalkCycle, AnimIndex.IdleArmed, PlayMode.StopAll); } else { PlayerModel.PlayAnim(AnimGroup.WalkCycle, AnimIndex.Idle, PlayMode.StopAll); } // PlayerModel.Walking = false; } _player.Movement = Vector3.Scale(Camera.transform.TransformVector(inputMove), new Vector3(1f, 0f, 1f)).normalized; } 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); _player.EnterVehicle(vehicle, seat); break; } }
private void Update() { if (Input.GetKeyDown(KeyCode.F9)) { _showVel = !_showVel; } if (!Loader.HasLoaded) { return; } // reset player input _player.IsWalking = _player.IsRunning = _player.IsSprinting = false; _player.Movement = Vector3.zero; if (!_player.enableFlying && !_player.IsInVehicle && Input.GetKeyDown(KeyCode.T)) { _player.enableFlying = true; _player.Movement = new Vector3(0f, 0f, 0f); // disable current movement PlayerModel.PlayAnim(AnimGroup.WalkCycle, AnimIndex.RoadCross, PlayMode.StopAll); // play 'flying' animation } else if (_player.enableFlying && Input.GetKeyDown(KeyCode.T)) { _player.enableFlying = false; } if (!_player.IsInVehicle && Input.GetKeyDown(KeyCode.R)) { _player.enableNoclip = !_player.enableNoclip; _player.characterController.detectCollisions = !_player.enableNoclip; if (_player.enableNoclip && !_player.enableFlying) { _player.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") && _player.IsInVehicle) { _player.ExitVehicle(); return; } if (_player.IsInVehicle) { return; } if (_player.enableFlying || _player.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")); _player.Movement = Vector3.Scale(Camera.transform.TransformVector(inputMove), new Vector3(1f, 1f, 1f)).normalized; _player.Movement *= 10.0f; if (Input.GetKey(KeyCode.LeftShift)) { _player.Movement *= 10.0f; } else if (Input.GetKey(KeyCode.Z)) { _player.Movement *= 100.0f; } return; } if (_player.WeaponHolder.IsHoldingWeapon && Input.GetMouseButton(1)) { // player is holding a weapon, and right click is on => aim with weapon _player.WeaponHolder.IsAimOn = true; } else { // player is not aiming _player.WeaponHolder.IsAimOn = false; // give input to player 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(KeyCode.LeftAlt)) { _player.IsWalking = true; } else if (Input.GetKey(KeyCode.Space)) { _player.IsSprinting = true; } else { _player.IsRunning = true; } } _player.Movement = Vector3.Scale(Camera.transform.TransformVector(inputMove), new Vector3(1f, 0f, 1f)).normalized; } 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); _player.EnterVehicle(vehicle, seat); break; } }
private void Update() { if (!_lockedCursor && Input.GetMouseButtonDown(0)) { _lockedCursor = true; Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; } else if (_lockedCursor && Input.GetKeyDown(KeyCode.Escape)) { _lockedCursor = false; Cursor.lockState = CursorLockMode.None; Cursor.visible = true; } if (_lockedCursor) { var cursorDelta = new Vector2(Input.GetAxisRaw("Mouse X"), Input.GetAxisRaw("Mouse Y")); Yaw += cursorDelta.x * CursorSensitivity.x; Pitch -= cursorDelta.y * CursorSensitivity.y; } Camera.transform.rotation = Quaternion.AngleAxis(Yaw, Vector3.up) * Quaternion.AngleAxis(Pitch, Vector3.right); float distance; Vector3 castFrom; if (_player.IsInVehicle) { CarCameraDistance = Mathf.Clamp(CarCameraDistance - Input.mouseScrollDelta.y, 2.0f, 32.0f); distance = CarCameraDistance; castFrom = _player.CurrentVehicle.transform.position; } else { PlayerCameraDistance = Mathf.Clamp(PlayerCameraDistance - Input.mouseScrollDelta.y, 2.0f, 32.0f); distance = PlayerCameraDistance; castFrom = transform.position + Vector3.up * .5f; } var castRay = new Ray(castFrom, -Camera.transform.forward); RaycastHit hitInfo; if (Physics.SphereCast(castRay, 0.25f, out hitInfo, distance, -1 ^ (1 << MapObject.BreakableLayer) ^ (1 << Vehicle.Layer))) { distance = hitInfo.distance; } Camera.transform.position = castRay.GetPoint(distance); if (Input.GetButtonDown("Use") && _player.IsInVehicle) { _player.ExitVehicle(); return; } if (_player.IsInVehicle) { return; } if (!_lockedCursor) { return; } if (_player.currentWeaponSlot > 0 && Input.GetMouseButton(1)) { // right click is on // aim with weapon // this.Play2Animations (new int[]{ 41, 51 }, new int[]{ 2 }, AnimGroup.MyWalkCycle, // AnimGroup.MyWalkCycle, AnimIndex.IdleArmed, AnimIndex.GUN_STAND); PlayerModel.PlayAnim(AnimGroup.MyWalkCycle, AnimIndex.GUN_STAND, PlayMode.StopAll); } else { var inputMove = new Vector3(Input.GetAxis("Horizontal"), 0f, Input.GetAxis("Vertical")); if (inputMove.sqrMagnitude > 0f) { inputMove.Normalize(); if (Input.GetKey(KeyCode.LeftShift)) { if (_player.currentWeaponSlot > 0) { // player is holding a weapon this.Play2Animations(new int[] { 41, 51 }, new int[] { 2 }, AnimGroup.WalkCycle, AnimGroup.MyWalkCycle, AnimIndex.Run, AnimIndex.IdleArmed); } else { // player is not holding a weapon PlayerModel.PlayAnim(AnimGroup.WalkCycle, AnimIndex.Run, PlayMode.StopAll); } // PlayerModel.Running = true; } else { // player is walking if (_player.currentWeaponSlot > 0) { this.Play2Animations(new int[] { 41, 51 }, new int[] { 2 }, AnimGroup.WalkCycle, AnimGroup.MyWalkCycle, AnimIndex.Walk, AnimIndex.IdleArmed); } else { PlayerModel.PlayAnim(AnimGroup.WalkCycle, AnimIndex.Walk, PlayMode.StopAll); } // PlayerModel.Walking = true; } } else { // player is standing if (_player.currentWeaponSlot > 0) { this.Play2Animations(new int[] { 41, 51 }, new int[] { 2 }, AnimGroup.MyWalkCycle, AnimGroup.MyWalkCycle, AnimIndex.IdleArmed, AnimIndex.IdleArmed); // PlayerModel.PlayAnim (AnimGroup.MyWalkCycle, AnimIndex.IdleArmed, PlayMode.StopAll); } else { PlayerModel.PlayAnim(AnimGroup.WalkCycle, AnimIndex.Idle, PlayMode.StopAll); } // PlayerModel.Walking = false; } _player.Movement = Vector3.Scale(Camera.transform.TransformVector(inputMove), new Vector3(1f, 0f, 1f)).normalized; } 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); _player.EnterVehicle(vehicle, seat); break; } }