using System; using System.Collections; using UnityEngine; using UnityEngine.UIElements; public class CameraMovement : CameraManager { private Vector3 dragOrigin = Vector3.zero; private Vector3 cameraDragOrigin = Vector3.zero; private bool isScroll = false; private bool isWebGL = false; private void Start() { if (Application.platform == RuntimePlatform.WebGLPlayer) { isWebGL = true; } BuildingRoom.Instance.OnSelectedObject += OnSelectObject; BuildingRoom.Instance.OnViewTypeChange += OnViewChange; } private void OnEnable() { character.enabled = false; } private void LateUpdate() { Mevment2D(); } public void CameraZoom2D() { float scrollDelta = Input.mouseScrollDelta.y; if (mainCamera.orthographicSize > MinYCameraPos && scrollDelta > 0) { isScroll = true; mainCamera.orthographicSize -= 1; if (isWebGL) { Renderer selected = BuildingRoom.Instance.GetSelectRenderer(); if (selected == null) return; string param = GetJsonInfo(selected); JSHandler.onCameraMove(param); } } else if (mainCamera.orthographicSize < MaxYCameraPos && scrollDelta < 0) { isScroll = true; mainCamera.orthographicSize += 1; if (isWebGL) { Renderer selected = BuildingRoom.Instance.GetSelectRenderer(); if (selected == null) return; string param = GetJsonInfo(selected); JSHandler.onCameraMove(param); } } else if (isScroll && scrollDelta == 0) { isScroll = false; if (isWebGL) { Renderer selected = BuildingRoom.Instance.GetSelectRenderer(); if (selected == null) return; string param = GetJsonInfo(selected); JSHandler.onCameraStop(param); } } } public void Mevment2D() { CameraZoom2D(); if (Input.GetMouseButtonDown(1)) { cameraDragOrigin = transform.position; dragOrigin = Camera.main.ScreenToViewportPoint(Input.mousePosition); if (isWebGL) { Renderer selected = BuildingRoom.Instance.GetSelectRenderer(); if (selected == null) return; string param = GetJsonInfo(selected); JSHandler.onCameraMove(param); } } if (Input.GetMouseButton(1)) { Vector3 pos = Camera.main.ScreenToViewportPoint(Input.mousePosition) - dragOrigin; Vector3 desirePos = cameraDragOrigin + 1 * new Vector3 (pos.x, 0, pos.y) * speedDrag; Vector3 move = desirePos - transform.position; mainCamera.transform.position += move; } if (Input.GetMouseButtonUp(1)) { if (isWebGL) { Renderer selected = BuildingRoom.Instance.GetSelectRenderer(); if (selected == null) return; string param = GetJsonInfo(selected); JSHandler.onCameraStop(param); } } } public string GetJsonInfo(Renderer selected) { Vector3 center = Vector3.zero; Vector3 screen = Vector3.zero; if (selected.tag != "SpawnObject") { center = selected.bounds.center; screen = Camera.main.WorldToScreenPoint(center); } ObjectsCoordinates jsonObject = new ObjectsCoordinates(); jsonObject.type = selected.gameObject.tag; jsonObject.x = screen.x; jsonObject.y = screen.y; string param = JsonUtility.ToJson(jsonObject); return param; } public void OnSelectObject(bool flag) { IsSelectedObject = flag; } public void OnViewChange(ViewType type) { if (ViewType == ViewType.Walk) lastCharacterRotate = character.transform.eulerAngles; ViewType = type; ResetPosition(); } public void ResetPosition() { character.transform.position = new Vector3(0.677f, 1.15f, 0); } private void OnDestroy() { BuildingRoom.Instance.OnSelectedObject -= OnSelectObject; BuildingRoom.Instance.OnViewTypeChange -= OnViewChange; } }