using UnityEngine;
public class GameViewCameraController : MonoBehaviour { public float lookSpeed = 10.0f; // 마우스 회전 속도 (기본 설정) public float moveSpeed = 0.1f; // 카메라 이동 속도 (기본 설정) public float zoomSpeed = 2.0f; // 카메라 줌 속도 (Orthographic Size 조정 속도)
private Vector3 lastMousePosition; // 이전 프레임의 마우스 위치 private bool isRotating = false; // 회전 중인지 여부 private bool isPanning = false; // 팬닝 중인지 여부
void Update() { HandleMouseInput(); }
private void HandleMouseInput() { // 우클릭 시 카메라 회전 시작 if (Input.GetMouseButtonDown(1) ) { isRotating = true; lastMousePosition = Input.mousePosition; } // 우클릭 해제 시 카메라 회전 종료 if (Input.GetMouseButtonUp(1) ) { isRotating = false; }
// 휠 클릭 시 카메라 팬닝 시작 if (Input.GetMouseButtonDown(2) ) { isPanning = true; lastMousePosition = Input.mousePosition; } // 휠 클릭 해제 시 카메라 팬닝 종료 if (Input.GetMouseButtonUp(2) ) { isPanning = false; }
// 카메라 회전 처리 if (isRotating) { Vector3 delta = Input.mousePosition - lastMousePosition; float rotationX = delta.y * lookSpeed * Time.deltaTime; float rotationY = delta.x * lookSpeed * Time.deltaTime;
transform.eulerAngles += new Vector3(-rotationX, rotationY, 0); lastMousePosition = Input.mousePosition; }
// 카메라 팬닝 처리 if (isPanning) { Vector3 delta = Input.mousePosition - lastMousePosition; Vector3 pan = new Vector3(-delta.x * moveSpeed, -delta.y * moveSpeed, 0);
transform.Translate(pan, Space.Self); lastMousePosition = Input.mousePosition; }
// 카메라 줌 처리 float scroll = Input.GetAxis("Mouse ScrollWheel"); Camera cam = Camera.main; if (cam.orthographic) { // Orthographic 카메라의 사이즈 조정 cam.orthographicSize -= scroll * zoomSpeed; cam.orthographicSize = Mathf.Clamp(cam.orthographicSize, 0.01f, 1.0f); // 줌 제한 설정 } else { // Perspective 카메라의 경우 전진/후진 transform.Translate(Vector3.forward * scroll * zoomSpeed, Space.Self); } } }
|