- Home /
 
               Question by 
               Mckaos · Aug 07, 2017 at 05:35 AM · 
                camerarotationcamera-movementcamera rotatesnap  
              
 
              Why is my camera not snapping 90 degrees?
Hello, i made this camera where i click mouse 2 button and drag to move it around my player, but i would like it to snap to every 90 degrees instead of going all the way around, here is my current camera code:
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class ThirdPersonCamera : MonoBehaviour
 {
 
     //All the variables used in this class(Look below to see what they do.)
     private const float Y_ANGLE_MIN = 5.0f;
     private const float Y_ANGLE_MAX = 35.0f;
     private const float DISTANCE_MAX = 50.0f;
     private const float DISTANCE_MIN = 20.0f;
     private const float TRANS_MIN = 1.0f;
     private const float TRANS_MAX = 2.0f;
 
     public float dragSpeed = 2;
     private Vector3 dragOrigin;
 
     public Transform lookAt;
     public Transform camTransform;
     public GameObject player;
 
     private Camera cam;
 
     public float distance = 5.0f;
     private float currentX = 0.0f;
     private float currentY = 0.0f;
     private float sensitivityX = 4.0f;
     private float sensitivityY = 1.0f;
     private float trandis;
 
     public Vector3 height = new Vector3(0, 0, 0);
 
     private bool below = false;
 
     private void Start()
     {
 
         //Makes camTransform a transform.
         camTransform = transform;
         //Sets variable cam value to the main camera
         cam = Camera.main;
 
     }
     private void Update()
     {
 
         //Makes the camera move by looking at the axis of the mouse(Also multiplied by the seisitivity.)
         if (Input.GetMouseButton(2))
         {
             currentX += Input.GetAxis("Mouse X") * sensitivityX;
             currentY -= Input.GetAxis("Mouse Y") * sensitivityY;
         }
         //Limits the Y variable
         currentY = Mathf.Clamp(currentY, Y_ANGLE_MIN, Y_ANGLE_MAX);
 
         //Thiago Laranja's scrollwheel implemetation.
         if (Input.GetAxis("Mouse ScrollWheel") > 0) { distance -= 2.0f; }
         if (Input.GetAxis("Mouse ScrollWheel") < 0) { distance += 2.0f; }
 
         //Makes sure that these variables never go over the max and be les than the min.
         distance = Mathf.Clamp(distance, DISTANCE_MIN, DISTANCE_MAX);
         trandis = Mathf.Clamp(distance, TRANS_MIN, TRANS_MAX) - 1;
 
         //Sets players transparency(Make sure that player materials rendering mode has set to transparent or other mode that supports transparency).
         player.GetComponent<Renderer>().material.color = new Color(player.GetComponent<Renderer>().material.color.r, player.GetComponent<Renderer>().material.color.g, player.GetComponent<Renderer>().material.color.b, trandis);
 
         //Disables the object from rendering if your're at distance 0.8.
         if (distance <= 0.8f) { player.GetComponent<Renderer>().enabled = false; }
         if (distance > 0.8f) { player.GetComponent<Renderer>().enabled = true; }
 
         //If close enough to the character sinp into distance of 0.1(If distance is 0 the camera cant be rotated.)
         if (distance <= 0.8f && below == false) { distance = 0.1f; below = true; }
         if (distance >= 0.8f && below == true) { below = false; }
 
     }
     private void LateUpdate()
     {
 
         //Subtracts hte distance from Z coordinate
         Vector3 dir = new Vector3(0, 0, -distance);
 
         //Creates an quaternion for rotation(too bad that we cannot use Vector3.)
         Quaternion rotation = Quaternion.Euler(currentY, currentX, 0);
 
         //Sets the cameras position and makes it look at player.
         camTransform.position = lookAt.position + height + rotation * dir;
         camTransform.LookAt(lookAt.position + height);
 
         //Camera Snap 90 degrees
         Vector3 angles = camTransform.eulerAngles;
         angles.y = (angles.y / 90) * 90;
         camTransform.eulerAngles = angles;
 
     }
 
 }
Specifically this last part under LateUpdate is where my 90 degree code is:
 //Camera Snap 90 degrees
         Vector3 angles = camTransform.eulerAngles;
         angles.y = (angles.y / 90) * 90;
         camTransform.eulerAngles = angles;
It is not working for some reason, any help? Thanks in advance.
               Comment
              
 
               
              Your answer
 
 
             Follow this Question
Related Questions
Forward and back movements with a camera emulating an isometric view 1 Answer
How to make the camera follow the player while still being able to be rotated? 1 Answer
Rotating the camera over a period of time 1 Answer
How do I get my camera to rotate around the y=0 coordinate it's looking at? 0 Answers
rotate around ball 3 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
               
 
			 
                