Files
test/Assets/PerfectWorld/Scripts/Camera/CameraController.cs
T

77 lines
2.7 KiB
C#

using Unity.Cinemachine;
using UnityEngine;
using UnityEngine.EventSystems;
namespace BrewMonster
{
public class CameraController : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IDragHandler
{
public static CameraController Instance;
[SerializeField]private CinemachineCamera _cinemachineCamera;
[SerializeField]private CinemachineOrbitalFollow orbital;
private Vector2 currentPos;
private bool fingerDown = false;
Vector2 delta = Vector2.zero;
public float minSwipeDistance = 10f;
public float speedX = 1f;
public float speedY = 1f;
public CinemachineOrbitalFollow Orbital { get => orbital;}
void OnEnable()
{
Instance = this;
#if UNITY_EDITOR
speedX = 500;
#endif
}
public void OnDrag(PointerEventData eventData)
{
delta = eventData.position - currentPos;
if (delta.magnitude >= minSwipeDistance)
{
orbital.HorizontalAxis.Value += delta.normalized.x * speedX * Time.deltaTime;
//orbital.HorizontalAxis.Value = Mathf.Clamp(orbital.HorizontalAxis.Value, -360f, 360f);
orbital.VerticalAxis.Value -= delta.normalized.y * speedY * Time.deltaTime;
orbital.VerticalAxis.Value = Mathf.Clamp(orbital.VerticalAxis.Value, -360f, 360f);
}
currentPos = eventData.position;
}
public void OnPointerDown(PointerEventData eventData)
{
currentPos = eventData.position;
fingerDown = true;
}
public void OnPointerUp(PointerEventData eventData)
{
fingerDown = false;
}
private void Update()
{
//todo: should not always update
if (_cinemachineCamera.Follow == null && CECGameRun.Instance.GetHostPlayer() != null)
{
if(CECGameRun.Instance.GetHostPlayer().PointCam != null)
{
_cinemachineCamera.Follow = CECGameRun.Instance.GetHostPlayer().PointCam;
_cinemachineCamera.ForceCameraPosition(CECGameRun.Instance.GetHostPlayer().PointCam.position, Quaternion.identity);
orbital.HorizontalAxis.Value = 208;
orbital.VerticalAxis.Value = -268;
}
else
{
_cinemachineCamera.Follow = CECGameRun.Instance.GetHostPlayer().transform;
_cinemachineCamera.ForceCameraPosition(CECGameRun.Instance.GetHostPlayer().ObjectPosition, Quaternion.identity);
orbital.HorizontalAxis.Value = 208;
orbital.VerticalAxis.Value = -268;
}
}
}
}
}