Hi,
I have a camera system which allows to change offset from one value to another wether the player is looking towards left or towards right.
I want to make a smooth transition between those two offset values while switching from one side to the other, but I can’t manage to make it.
Can anyone look into this code and help me?
using UnityEngine;
using System.Collections;
public class CameraManager : MonoBehaviour
{
private Transform followTarget;
private Vector3 followOffset;
private Vector3 followOffsetLeft;
private Vector3 followOffsetRight;
private Transform lookAtTarget;
private Vector3 lookAtOffset;
private Quaternion faceLeft;
private Quaternion faceRight;
private Transform playerCharacter;
private Transform currentPosition;
private float step;
private float speedTransition;
private Vector3 test;
// Use this for initialization
void Start()
{
followTarget = GameObject.Find("Player Character").GetComponent<Transform>();
lookAtTarget = GameObject.Find("Camera Look At").GetComponent<Transform>();
lookAtOffset = Vector3.zero;
playerCharacter = GameObject.Find("Player Character").GetComponent<Transform>();
faceRight = new Quaternion(0.0f, 1.0f, 0.0f, 0.0f);
faceLeft = new Quaternion(0.0f, 0.0f, 0.0f, 1.0f);
currentPosition = lookAtTarget;
step = 0.0f;
speedTransition = 1.0f;
}
// Update is called once per frame
void Update()
{
step += Time.deltaTime * speedTransition;
followOffsetLeft = new Vector3(-4, 3, -16);
followOffsetRight = new Vector3(4, 3, -16);
if (playerCharacter.transform.rotation == faceLeft)
{
followOffset = Vector3.Lerp(followOffsetRight, followOffsetLeft, step);
}
if (playerCharacter.transform.rotation == faceRight)
{
followOffset = Vector3.Lerp(followOffsetLeft, followOffsetRight, step);
}
transform.position = followTarget.position + followOffset;
transform.LookAt(lookAtTarget.position + lookAtOffset);
}
}