Files
Magical-Jumping-Bean/Assets/Scripts/CameraController.cs
T

81 lines
2.6 KiB
C#
Raw Normal View History

2019-09-29 19:40:54 -04:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
2019-09-29 19:40:54 -04:00
public class CameraController : MonoBehaviour
{
public bool useOffsetValues;
public bool invertY = false;
public float rotateSpeed = 1.0f;
public float maxViewAngle;
public float minViewAngle;
public Transform player;
public Transform pivot;
public Vector3 offset;
2020-02-09 17:28:51 -05:00
public Transform target;
2019-09-29 19:40:54 -04:00
void Start () {
if(!useOffsetValues){
offset = player.position - transform.position;
}
pivot.position = player.position;
2020-02-09 17:28:51 -05:00
pivot.parent = target.transform;
2019-09-29 19:40:54 -04:00
}
void LateUpdate(){
float mouseCamX = 0;
float mouseCamY = 0;
float controllerCamX = 0;
float controllerCamY = 0;
if(!PauseMenu.GameIsPaused)
{
mouseCamX = Input.GetAxisRaw("Mouse X") * rotateSpeed;
mouseCamY = Input.GetAxisRaw("Mouse Y") * rotateSpeed;
controllerCamX = Input.GetAxisRaw("Right Stick X") * (rotateSpeed * 200.0f) * Time.deltaTime;
controllerCamY = Input.GetAxisRaw("Right Stick Y") * (rotateSpeed * 200.0f) * Time.deltaTime;
}
2020-02-09 17:28:51 -05:00
target.Rotate(0, mouseCamX, 0);
target.Rotate(0, controllerCamX, 0);
2019-09-29 19:40:54 -04:00
if (invertY){
pivot.Rotate(mouseCamY, 0, 0);
pivot.Rotate(controllerCamY, 0, 0);
2019-09-29 19:40:54 -04:00
} else {
pivot.Rotate(-mouseCamY, 0, 0);
pivot.Rotate(-controllerCamY, 0, 0);
2019-09-29 19:40:54 -04:00
}
if(pivot.rotation.eulerAngles.x > maxViewAngle && pivot.rotation.eulerAngles.x < 180f)
{
2020-01-15 18:57:42 -05:00
pivot.rotation = Quaternion.Euler(maxViewAngle, pivot.rotation.eulerAngles.y, pivot.rotation.eulerAngles.z);
2019-09-29 19:40:54 -04:00
}
if(pivot.rotation.eulerAngles.x > 180f && pivot.rotation.eulerAngles.x < (360 + minViewAngle))
{
2020-01-15 18:57:42 -05:00
pivot.rotation = Quaternion.Euler(minViewAngle, pivot.rotation.eulerAngles.y, pivot.rotation.eulerAngles.z);
2019-09-29 19:40:54 -04:00
}
float camZ = Input.GetAxisRaw("Mouse ScrollWheel");
float angleY = pivot.eulerAngles.y;
2019-09-29 19:40:54 -04:00
float angleX = pivot.eulerAngles.x;
float cameraAngle = transform.eulerAngles.y;
Quaternion rotation = Quaternion.Euler(angleX, angleY, 0);
transform.position = player.position - (rotation * offset);
2019-09-29 19:40:54 -04:00
if(transform.position.y < player.position.y){
transform.position = new Vector3(transform.position.x, player.position.y - 0.5f, transform.position.z);
}
transform.LookAt(player.position);
}
}