- Home /
2.5D platformer camera
Hi I'm making a 2.5D game that allows the player to switch from first person to 2.5D perspective by pressing the "R" key. I got the switching from two cameras to work but I can't get the 2.5D camera to move along with the character without having the camera rotating in 360, degree so I took out the parent between the 2.5D Cam from the character so the whole environment won't rotate. However, the Camera would not follow the character so here is my code for the camera to follow the character.
using UnityEngine; using System.Collections;
public class ManCamFollow : MonoBehaviour { public float xMargin = 1.0f; public float zMargin = 1.0f; public float xSmooth = 5.0f; public float zSmooth = 5.0f; public Vector3 maxXAndZ; public Vector3 minXAndZ; private Transform player;
void Awake ()
{
player = GameObject.FindGameObjectWithTag ("Player").transform;
}
void FixedUpdate ()
{
TrackPlayer ();
}
bool CheckXMargin ()
{
return Mathf.Abs (transform.position.x - player.position.x) > xMargin;
}
bool CheckZMargin ()
{
return Mathf.Abs (transform.position.z - player.position.z) > zMargin;
}
void TrackPlayer ()
{
float targetX = transform.position.x;
float targetZ = transform.position.z;
float targetY = transform.position.y;
if (CheckXMargin ()) {
targetX = Mathf.Lerp (transform.position.x, player.position.x, Time.deltaTime * xSmooth);
}
if (CheckZMargin ()) {
targetZ = Mathf.Lerp (transform.position.z, player.position.z, Time.deltaTime * zSmooth);
}
targetX = Mathf.Clamp (targetX, minXAndZ.x, maxXAndZ.x);
targetZ = Mathf.Clamp (targetZ, minXAndZ.z, maxXAndZ.z);
targetY = Mathf.Clamp (targetY, 0, 200);
transform.position = new Vector3 (targetX, targetY, targetZ);
}
}
and this is the code for the switching of cameras (Java)
pragma strict
var ThePlayer : GameObject; var FirstPersonCam : GameObject; var ThirdPersonCam : GameObject; var check;
function Start () { ThirdPersonCam.gameObject.SetActive(false); FirstPersonCam.gameObject.SetActive(true); check = true; }
function Update () { if(Input.GetKeyDown(KeyCode.R)){ if(check){ ThirdPersonCam.gameObject.SetActive(false); FirstPersonCam.gameObject.SetActive(true); } else{ FirstPersonCam.gameObject.SetActive(false); ThirdPersonCam.gameObject.SetActive(true); }
check = !check;
}
}
Any suggestions? Thank you.
Your answer
Follow this Question
Related Questions
rotate character in 2.5D 1 Answer
Circular (Inside cylinder) World for 2d Platformer 1 Answer
Jumping is randomly not working. 0 Answers
Only look at the moveDirection of Z-axis 2 Answers
2.5D Game multiple paths(routes) 1 Answer