Last active
February 25, 2021 00:20
-
-
Save PolarKC/055b21b7312662ab4c9c117a8e7aed55 to your computer and use it in GitHub Desktop.
Camera Rotation Controller
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.Collections; | |
using System.Collections.Generic; | |
using UnityEngine; | |
public class CameraRotationController : MonoBehaviour | |
{ | |
public Transform cameraRigTransform; | |
public float rotateSpeed = 10.0f; //rotation speed | |
public float rotateDegrees = 90.0f; // degrees to rotate per hit | |
private Quaternion _targetRot; | |
private float targetAngle = 0.0f; | |
void Start() | |
{ | |
cameraRigTransform = GetComponent<Transform>(); | |
} | |
void Update() | |
{ | |
if (Input.GetKeyDown(KeyCode.E)) | |
{ | |
targetAngle = checkBounds(targetAngle + rotateDegrees); | |
_targetRot = Quaternion.AngleAxis(targetAngle, cameraRigTransform.up); | |
} | |
if (Input.GetKeyDown(KeyCode.Q)) | |
{ | |
targetAngle = checkBounds(targetAngle - rotateDegrees); | |
_targetRot = Quaternion.AngleAxis(targetAngle, cameraRigTransform.up); | |
} | |
} | |
float checkBounds(float _angle) | |
{ | |
if (_angle > 180.0f) | |
{ | |
return -1f * rotateDegrees; // Example: -90.0f | |
} | |
else if (_angle < -180.0f) | |
{ | |
return rotateDegrees; // Example: 90.0f | |
} | |
else | |
{ | |
return _angle; | |
} | |
} | |
void LateUpdate() | |
{ | |
cameraRigTransform.rotation = Quaternion.Slerp(cameraRigTransform.rotation, _targetRot, Time.deltaTime * rotateSpeed); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment