51 lines
1.3 KiB
C#
51 lines
1.3 KiB
C#
using System;
|
|
using UnityEngine;
|
|
using UnityEngine.Scripting.APIUpdating;
|
|
|
|
public class CameraController : MonoBehaviour
|
|
{
|
|
public float moveSpeed;
|
|
public float zoomSpeed;
|
|
public float minZoomDist;
|
|
public float maxZoomDist;
|
|
private Camera cam;
|
|
void Awake()
|
|
{
|
|
cam = Camera.main;
|
|
}
|
|
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
|
void Start()
|
|
{
|
|
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
Move();
|
|
Zoom();
|
|
}
|
|
|
|
private void Move()
|
|
{
|
|
float xInput = Input.GetAxisRaw("Horizontal");
|
|
float zInput = Input.GetAxisRaw("Vertical");
|
|
Vector3 dir = transform.forward * zInput + transform.right * xInput;
|
|
transform.position += dir * moveSpeed * Time.deltaTime;
|
|
}
|
|
private void Zoom()
|
|
{
|
|
float scrollInput = Input.GetAxisRaw("Mouse ScrollWheel");
|
|
float dist = Vector3.Distance(transform.position, cam.transform.position);
|
|
if(dist < minZoomDist && scrollInput > 0.0f)
|
|
return;
|
|
if(dist > maxZoomDist && scrollInput < 0.0f)
|
|
return;
|
|
cam.transform.position += cam.transform.forward * scrollInput * zoomSpeed;
|
|
}
|
|
public void FocusOnPosition(Vector3 pos)
|
|
{
|
|
transform.position = pos;
|
|
}
|
|
}
|