Camera position change on key press

Trying to make a camera move between one of two spots when the player presses e.
This is my code:

public GameObject player;

private bool cameraPos;
private float ztransform;
private float ytransform;
private float xtransform;
private Vector3 xyztransform;
private Vector3 offset;

void Start ()
{ 
	xyztransform = new Vector3 (xtransform, ytransform, ztransform);
	xtransform = 0;
	cameraPos = false;
	ytransform = 0;
	ztransform = 0;
	offset = transform.position - player.transform.position;
}
	void LateUpdate ()
{
	transform.position = player.transform.position + offset + xyztransform;
} 
void Update () {
	if (cameraPos == false && Input.GetKeyDown(KeyCode.E)){
		ztransform = 8;
		cameraPos = true;
	}
	if (cameraPos == true && Input.GetKeyDown(KeyCode.E))
	{
		ztransform = 0;
		cameraPos = false;
	}
	xyztransform = new Vector3 (xtransform, ytransform, ztransform);
}

Whenever I press e, the camera should move, but keep following the player. Any way to do this?

All you need is a boolean to keep track of the current camera state (you currently use “cameraPos”) and 2 different vector3 position offsets (1 for each camera state) and then just switch which one you add on depending on the value of the boolean:

public GameObject player;
private bool cameraPos = true;
private Vector3 offset1;
private Vector3 offset2;

void Start()
{ 
    offset1 = transform.position - player.transform.position;
	offset2 = offset1 + new Vector3(0,0,8);
}

void LateUpdate()
{
	if (cameraPos)
		transform.position = player.transform.position + offset1;
	else
		transform.position = player.transform.position + offset2;
} 

void Update()
{
    if (Input.GetKeyDown(KeyCode.E)){
        cameraPos = !cameraPos; // make cameraPos the opposite of what it was
    }
}

As a Said @dhore You needed a simple Boolean switcher

here it is :slight_smile: @marshel126

I’m beginner too :0

public class FollowToPlayer : MonoBehaviour
{
    [SerializeField] private GameObject targetToFollow;

    [SerializeField] KeyCode changeCameraKey = KeyCode.E;

    private bool isCamFront = false;

    [SerializeField] private Vector3 frontCamPos = new Vector3(4.5f, 4, 0);
    [SerializeField] private Vector3 backCamPos = new Vector3(4.5f, 4, -6);


    void Start()
    {
        transform.SetParent(targetToFollow.transform); // Set camera parent to car
    }
    private void Update()
    {
        if (isCamFront)
        {
            transform.localPosition = frontCamPos;
        }
        else
        {
            transform.localPosition = backCamPos;
        }
    }

    private void LateUpdate()
    {
        if (Input.GetKeyDown(changeCameraKey))
        {
            isCamFront = !isCamFront;
        }
    }
}