Initial commit

This commit is contained in:
Lncvrt committed 2026-10-13 21:14:39 -07:00
commit 53ef868e68
5764 files changed
+464615

No files matched your search

+121
View File
@@ -0,0 +1,121 @@
using UnityEngine;
using UnityEngine.InputSystem;
public class CameraHandler : MonoBehaviour
{
bool isDragging = false;
Vector2 pointerDownPos;
bool pointerDown = false;
float prevPinchDistance = -1;
Vector3 dragWorldStart;
void Update()
{
HandleCameraMovement();
HandleZoom();
}
void HandleCameraMovement()
{
Vector2 inputPos = Vector2.zero;
bool pressed = false;
if (Application.isMobilePlatform && Touchscreen.current != null)
{
var touch = Touchscreen.current.primaryTouch;
if (touch.press.isPressed)
{
inputPos = touch.position.ReadValue();
pressed = true;
}
}
else if (Mouse.current != null)
{
if (Mouse.current.leftButton.isPressed)
{
inputPos = Mouse.current.position.ReadValue();
pressed = true;
}
}
if (!pressed)
{
pointerDown = false;
isDragging = false;
return;
}
Camera cam = Camera.main;
if (!pointerDown)
{
pointerDown = true;
pointerDownPos = inputPos;
dragWorldStart = cam.ScreenToWorldPoint(
new Vector3(inputPos.x, inputPos.y, -cam.transform.position.z)
);
return;
}
if (!isDragging)
{
if (Vector2.Distance(inputPos, pointerDownPos) < 5f)
return;
isDragging = true;
}
Vector3 currentWorld = cam.ScreenToWorldPoint(
new Vector3(inputPos.x, inputPos.y, -cam.transform.position.z)
);
Vector3 movement = dragWorldStart - currentWorld;
cam.transform.position += movement;
}
void HandleZoom()
{
if (Application.isMobilePlatform && Touchscreen.current != null)
{
var touches = Touchscreen.current.touches;
if (touches.Count >= 2)
{
Vector2 pos1 = touches[0].position.ReadValue();
Vector2 pos2 = touches[1].position.ReadValue();
if (touches[0].press.isPressed && touches[1].press.isPressed)
{
float currentDist = Vector2.Distance(pos1, pos2);
if (prevPinchDistance > 0)
{
float diff = currentDist - prevPinchDistance;
Camera.main.orthographicSize = Mathf.Clamp(Camera.main.orthographicSize - (diff * 0.1f), 1f, 100f);
}
prevPinchDistance = currentDist;
return;
}
}
prevPinchDistance = -1;
}
else
{
float scroll = Mouse.current.scroll.ReadValue().y;
if (scroll != 0)
{
if (Keyboard.current.leftCtrlKey.isPressed)
{
Camera.main.orthographicSize = Mathf.Clamp(Camera.main.orthographicSize - scroll, 1f, 100f);
}
else
{
var pos = Camera.main.transform.position;
pos.y += scroll * 5f;
Camera.main.transform.position = pos;
}
}
}
}
}