- Home /
Single Camera Lerping between three characters? (code provided)
I have an empty gameobject that has the camera as a child and im simply trying to make the object lerp to the players x positions. I have it storing the position when 1,2,3 is pressed and switching to the corresponding character but I can't seem to make a smooth lerp transition in between. I need to make it so that when the player presses 1-2-3 it lerps to that players location. (and can be done in any order)
Basically a sliding gameobject that will place itself in the desired characters position and then it has a camera parented with an offset.
Or if anyone has a straightforward camera method that will target and offset behind each character on a lerp please feel free to speak up. :)
using UnityEngine; using System.Collections;
public class CameraScript : MonoBehaviour {
public Vector3 oldCamPos;
public GameObject player1;
public GameObject player2;
public GameObject player3;
public float smooth;
public bool omar=false;
public bool rach=false;
public bool bran=false;
void Start()
{
Vector3 oldCamPos = new Vector3(player1.transform.position.x, player1.transform.position.y, player1.transform.position.z);
}
void Update()
{
if (Input.GetKeyDown (KeyCode.Alpha1)) {
omar = true;
oldCamPos = new Vector3 (player1.transform.position.x, player1.transform.position.y, player1.transform.position.z);
CameraSwitch ();
}
if (Input.GetKeyDown (KeyCode.Alpha2)) {
rach = true;
oldCamPos = new Vector3 (player2.transform.position.x, player2.transform.position.y, player2.transform.position.z);
CameraSwitch ();
}
if (Input.GetKeyDown (KeyCode.Alpha3)) {
bran = true;
oldCamPos = new Vector3 (player3.transform.position.x, player3.transform.position.y, player3.transform.position.z);
CameraSwitch ();
}
}
///////////////////////////////////////////////////////////////////////////////////////
void CameraSwitch()
{
if (omar) {
transform.position = Vector3.Lerp (oldCamPos, player1.transform.position, Time.deltaTime * .1f);
//transform.rotation = Quaternion.Lerp (player1.transform.rotation, player1.transform.rotation, Time.deltaTime * smooth);
//yield return new WaitForSeconds(1);
omar = false;
}
if (rach) {
transform.position = Vector3.Lerp (oldCamPos, player2.transform.position, Time.deltaTime * .1f);
//transform.rotation = Quaternion.Lerp (player2.transform.rotation, player2.transform.rotation, Time.deltaTime * smooth);
//yield return new WaitForSeconds(1);
rach= false;
}
if (bran) {
transform.position = Vector3.Slerp (oldCamPos, player3.transform.position, Time.deltaTime * smooth);
//transform.rotation = Quaternion.Slerp (player3.transform.rotation, player3.transform.rotation, Time.deltaTime * smooth);
//yield return new WaitForSeconds(1);
bran = false;
}
}
}
I'd use a Coroutine like shown here: http://answers.unity3d.com/comments/1235406/view.html
Your answer
Follow this Question
Related Questions
MouseOrbit Camera Lerp 1 Answer
Switching Cameras - Confusion with Two Code Samples 2 Answers
Play anim, javascript 1 Answer
Switch to second camera which has all the GUI 3 Answers
Disabling first actor when switching to another camera. 0 Answers