You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

77 lines
1.8 KiB

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraController : MonoBehaviour {
public static CameraController Instance {
get;
set;
}
public float smooth;
public float distToTable;
public Transform tablePlane;
private Vector3 posVel = Vector3.zero;
private Vector3 rotVel = Vector3.zero;
private Vector3 menuPosition;
private Quaternion menuRotation;
private bool movesOnTable;
private bool movesOnMenu;
void Awake() {
//Manage Singleton
if (Instance != null && Instance != this)
Destroy(gameObject);
else
Instance = this;
DontDestroyOnLoad(gameObject);
}
void Start() {
menuPosition = transform.position;
menuRotation = transform.rotation;
}
void Update() {
Vector3 pos, angles;
if (movesOnTable) {
pos = tablePlane.position + Vector3.up * distToTable;
angles = (tablePlane.rotation * Quaternion.Euler(90, 0, 90)).eulerAngles;
MoveSmoothly(pos, angles);
float dist = Vector3.Distance(pos, transform.position);
if (dist < 0.01) {
movesOnTable = false;
GUIController.Instance.ShowLobby();
}
}
if (movesOnMenu) {
pos = menuPosition;
angles = menuRotation.eulerAngles;
MoveSmoothly(pos, angles);
float dist = Vector3.Distance(pos, transform.position);
if (dist < 1) {
movesOnMenu = false;
GUIController.Instance.ShowMenu();
}
}
}
private void MoveSmoothly(Vector3 pos, Vector3 angles) {
transform.position = Vector3.SmoothDamp(transform.position, pos, ref posVel, smooth);
transform.rotation = Quaternion.Euler(Vector3.SmoothDamp(transform.rotation.eulerAngles, angles, ref rotVel, smooth));
}
public void MoveOnTable() {
movesOnTable = true;
movesOnMenu = false;
}
public void MoveOnMenu() {
movesOnMenu = true;
movesOnTable = false;
}
}