- Home /
This post has been wikified, any user with enough reputation can edit it.
Question by
allghoichorchoj · May 20, 2017 at 08:48 AM ·
camerarotationresetthird-personreset-position
3drd person camera reset
hello guys!
this is my camera conroller that have 2 modes, one that can rotate around character just in one axis and rotates character... and "free look" mode if u hold button, to rotate around character (character rotation is disabled)...having camera on empty...and atached to player.
how to makes both modes "blended together"so after end of both camera will return to def position? here is video to better see what i mean: https://www.youtube.com/watch?v=1kIdPVwkzNw&feature=youtu.be
using System;
using UnityEngine;
public class CameraLook : MonoBehaviour{
public float mouseSensitivity;
public float maxClampAngle;
public float minClampAngle;
public float zoomSpeed;
public float minZoom;
public float maxZoom;
public GameObject cam;
public GameObject player;
float rotY;
float rotX;
float playerRotX;
float cameraZoom;
float cameraLook;
void Start ()
{
Vector3 rot = transform.localRotation.eulerAngles;
Vector3 playerRot = transform.rotation.eulerAngles;
rotY = rot.y;
rotX = rot.x;
playerRotX = playerRot.x;
}
void LateUpdate ()
{
cameraLook = Input.GetAxis ("CameraLook");
cameraZoom = Input.GetAxis ("Mouse ScrollWheel") * zoomSpeed * Time.deltaTime;
cam.transform.Translate (0, 0, cameraZoom); //Zoom
if (cam.transform.localPosition.z < -maxZoom) //zoom out
{
cam.transform.localPosition = new Vector3 (cam.transform.localPosition.x, cam.transform.localPosition.y, -maxZoom);
Debug.Log ("MaxZoom!");
}
if (cam.transform.localPosition.z > -minZoom) // zoom in
{
Debug.Log ("MinZoom!");
cam.transform.localPosition = new Vector3 (cam.transform.localPosition.x, cam.transform.localPosition.y, -minZoom);
}
if (cameraLook == 0) { // button up
rotY += Input.GetAxis ("Mouse Y")* mouseSensitivity;
rotX += Input.GetAxis ("Mouse X") * mouseSensitivity;
playerRotX += Input.GetAxis ("Mouse X") * mouseSensitivity;
rotY = Mathf.Clamp (rotY, -minClampAngle, maxClampAngle);
transform.localEulerAngles = new Vector3 (0, 0, 0);// reset to see character's back
transform.localRotation =Quaternion.Euler (-rotY,transform.localEulerAngles.y, transform.localEulerAngles.z);
player.transform.rotation =Quaternion.Euler(0,playerRotX,0);
}
if (cameraLook!=0) {// button down
transform.localEulerAngles = player.transform.localEulerAngles;
rotX += Input.GetAxis ("Mouse X") * mouseSensitivity;
rotY += Input.GetAxis ("Mouse Y") * mouseSensitivity;
rotY = Mathf.Clamp (rotY, -minClampAngle, maxClampAngle);
transform.localRotation =Quaternion.Euler(-rotY, rotX, transform.localEulerAngles.z);
}
}
}
Comment