I want to have a cinemachine system where when you press a button like C the camera locates the current player and zooms in like a rail moving down and it switches to the player camera and when C is pressed again to zoom out like the rail is moving up and transitions into the main camera.
I think this will help you
you need to create empty 3xGameObject in your scene and place then like you want on your scene
and on camera add component “Look At Constraint” and add in your Gameobject you want to focus .
EDIT: YOU NEED TO CHANGE StartCoroutine(transition3()) TO VOID START
Blockquote
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class cameraTransition : MonoBehaviour
{
[Header("Camera")]
public float lerpTime;
public GameObject CameraObject;
public GameObject finalCameraPosition, startCameraPosition, position3;
private bool finalToStart, startToFinal, m_position3;
void Start()
{
//THERE//StartCoroutine(transition3())
}
void FixedUpdate()
{
cameraTranzition();
// THAT// StartCoroutine(transition3());DELETE
if (finalToStart == true)
{
StartCoroutine(transition1());
}
if (startToFinal == true)
{
StartCoroutine(transition2());
}
if (m_position3 == true)
{
StartCoroutine(transition3());
}
}
IEnumerator transition1()
{
yield return new WaitForSeconds(10);
finalToStart = false;
startToFinal = true;
m_position3 = false;
print("transition1");
}
IEnumerator transition2()
{
yield return new WaitForSeconds(10);
finalToStart = false;
startToFinal = false;
m_position3 = true;
print("transition2");
}
IEnumerator transition3()
{
yield return new WaitForSeconds(10);
finalToStart = true;
startToFinal = false;
m_position3 = false;
print("transition3");
}
public void cameraTranzition()
{
if (startToFinal)
{
CameraObject.transform.position = Vector3.Lerp(CameraObject.transform.position, finalCameraPosition.transform.position, lerpTime * Time.deltaTime);
}
if (finalToStart)
{
CameraObject.transform.position = Vector3.Lerp(CameraObject.transform.position, startCameraPosition.transform.position, lerpTime * Time.deltaTime);
}
if (m_position3)
{
CameraObject.transform.position = Vector3.Lerp(CameraObject.transform.position, position3.transform.position, lerpTime * Time.deltaTime * 3);
}
}
}