void Update() { if (preWid != Screen.width || preheight != Screen.height) { Resources.UnloadUnusedAssets(); onRESIZED(); } fixALLcamerasPreFrame(); wheelValue = UICamera.GetAxis("Mouse ScrollWheel") * 50; pointedGameObject = null; pointedCollider = null; Ray line = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(line, out hit, (float)1000, rayFilter)) { pointedGameObject = hit.collider.gameObject; pointedCollider = hit.collider; } GameObject hoverobject = UICamera.Raycast(Input.mousePosition) ? UICamera.lastHit.collider.gameObject : null; if (hoverobject != null) { if (hoverobject.layer == 11 || pointedGameObject == null) { pointedGameObject = hoverobject; pointedCollider = UICamera.lastHit.collider; } } InputGetMouseButtonDown_0 = Input.GetMouseButtonDown(0); InputGetMouseButtonUp_0 = Input.GetMouseButtonUp(0); InputGetMouseButtonDown_1 = Input.GetMouseButtonDown(1); InputGetMouseButtonUp_1 = Input.GetMouseButtonUp(1); InputEnterDown = Input.GetKeyDown(KeyCode.Return); InputGetMouseButton_0 = Input.GetMouseButton(0); for (int i = 0; i < servants.Count; i++) { servants[i].Update(); } TcpHelper.preFrameFunction(); delayedTask remove = null; while (true) { remove = null; for (int i = 0; i < delayedTasks.Count; i++) { if (Program.TimePassed() > delayedTasks[i].timeToBeDone) { remove = delayedTasks[i]; try { remove.act(); } catch (System.Exception e) { UnityEngine.Debug.Log(e); } break; } } if (remove != null) { delayedTasks.Remove(remove); } else { break; } } }
void GetPlayerInput() { moveVector = Vector3.zero; // Check Mouse Wheel Input prior to Shift Key so we can apply multiplier on Shift for Scrolling mouseWheel = UICamera.GetAxis("Mouse ScrollWheel"); float touchCount = Input.touchCount; if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift) || touchCount > 0) { mouseWheel *= 10; if (Input.GetKeyDown(KeyCode.I)) { CameraMode = CameraModes.Isometric; } if (Input.GetKeyDown(KeyCode.F)) { CameraMode = CameraModes.Follow; } if (Input.GetKeyDown(KeyCode.S)) { MovementSmoothing = !MovementSmoothing; } // Check for right mouse button to change camera follow and elevation angle if (Input.GetMouseButton(1)) { mouseY = Input.GetAxis("Mouse Y"); mouseX = Input.GetAxis("Mouse X"); if (mouseY > 0.01f || mouseY < -0.01f) { ElevationAngle -= mouseY * MoveSensitivity; // Limit Elevation angle between min & max values. ElevationAngle = Mathf.Clamp(ElevationAngle, MinElevationAngle, MaxElevationAngle); } if (mouseX > 0.01f || mouseX < -0.01f) { OrbitalAngle += mouseX * MoveSensitivity; if (OrbitalAngle > 360) { OrbitalAngle -= 360; } if (OrbitalAngle < 0) { OrbitalAngle += 360; } } } // Get Input from Mobile Device if (touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Moved) { Vector2 deltaPosition = Input.GetTouch(0).deltaPosition; // Handle elevation changes if (deltaPosition.y > 0.01f || deltaPosition.y < -0.01f) { ElevationAngle -= deltaPosition.y * 0.1f; // Limit Elevation angle between min & max values. ElevationAngle = Mathf.Clamp(ElevationAngle, MinElevationAngle, MaxElevationAngle); } // Handle left & right if (deltaPosition.x > 0.01f || deltaPosition.x < -0.01f) { OrbitalAngle += deltaPosition.x * 0.1f; if (OrbitalAngle > 360) { OrbitalAngle -= 360; } if (OrbitalAngle < 0) { OrbitalAngle += 360; } } } // Check for left mouse button to select a new CameraTarget or to reset Follow position if (Input.GetMouseButton(0)) { RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit, 300, 1 << 10 | 1 << 11 | 1 << 12 | 1 << 14)) { if (hit.transform == CameraTarget) { // Reset Follow Position OrbitalAngle = 0; } else { CameraTarget = hit.transform; OrbitalAngle = 0; MovementSmoothing = previousSmoothing; } } } if (Input.GetMouseButton(2)) { if (dummyTarget == null) { // We need a Dummy Target to anchor the Camera dummyTarget = new GameObject("Camera Target").transform; dummyTarget.position = CameraTarget.position; dummyTarget.rotation = CameraTarget.rotation; CameraTarget = dummyTarget; previousSmoothing = MovementSmoothing; MovementSmoothing = false; } else if (dummyTarget != CameraTarget) { // Move DummyTarget to CameraTarget dummyTarget.position = CameraTarget.position; dummyTarget.rotation = CameraTarget.rotation; CameraTarget = dummyTarget; previousSmoothing = MovementSmoothing; MovementSmoothing = false; } mouseY = Input.GetAxis("Mouse Y"); mouseX = Input.GetAxis("Mouse X"); moveVector = cameraTransform.TransformDirection(mouseX, mouseY, 0); dummyTarget.Translate(-moveVector, Space.World); } } // Check Pinching to Zoom in - out on Mobile device if (touchCount == 2) { Touch touch0 = Input.GetTouch(0); Touch touch1 = Input.GetTouch(1); Vector2 touch0PrevPos = touch0.position - touch0.deltaPosition; Vector2 touch1PrevPos = touch1.position - touch1.deltaPosition; float prevTouchDelta = (touch0PrevPos - touch1PrevPos).magnitude; float touchDelta = (touch0.position - touch1.position).magnitude; float zoomDelta = prevTouchDelta - touchDelta; if (zoomDelta > 0.01f || zoomDelta < -0.01f) { FollowDistance += zoomDelta * 0.25f; // Limit FollowDistance between min & max values. FollowDistance = Mathf.Clamp(FollowDistance, MinFollowDistance, MaxFollowDistance); } } // Check MouseWheel to Zoom in-out if (mouseWheel < -0.01f || mouseWheel > 0.01f) { FollowDistance -= mouseWheel * 5.0f; // Limit FollowDistance between min & max values. FollowDistance = Mathf.Clamp(FollowDistance, MinFollowDistance, MaxFollowDistance); } }