- Home /
2d camera follow player by looking ahead.
I have created smooth camera follow script which tracks player in the x axis. Now i'm trying to figure out how to make the camera look ahead of the player.
This is what i got so far:
using UnityEngine;
using System.Collections;
public class CameraFollow : MonoBehaviour {
public Transform player;
public float smoothTime = 0.3f;
private Vector3 velocity = Vector3.zero;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
Vector3 targetPosition = player.transform.position;
targetPosition.z = transform.position.z;
targetPosition.y = 0f;
transform.position = Vector3.SmoothDamp (transform.position, targetPosition, ref velocity, smoothTime);
}
}
Any ideas?
Comment
Answer by Danao · Oct 08, 2017 at 11:21 PM
This is what I'm currently using. It could use some tweaking yet but should get you started if you haven't already found a solution:
public class MyCameraFollow : MonoBehaviour
{
[SerializeField]
private float xMax;
[SerializeField]
private float yMax;
[SerializeField]
private float xMin;
[SerializeField]
private float yMin;
//Set the amount of horizontal offset in the inspector
public Vector2 offset;
//Allow us to click and drag an object (that we want to follow) in the inspector
private Transform target;
private Vector3 tempFollowedObjectWithOffset;
//Lerp
public bool lerpCameraMovementOnX;
public float lerpSpeed;
void FixedUpdate()
{
if (Player.Instance.IsDead == false)
{
target = GameObject.Find("Player").transform;
if (Player.Instance.facingLeft == true)
{
tempFollowedObjectWithOffset = new Vector3(Mathf.Clamp(target.position.x + offset.x, xMin, xMax), Mathf.Clamp(target.position.y + offset.y, yMin, yMax), transform.position.z);
}
else
{
tempFollowedObjectWithOffset = new Vector3(Mathf.Clamp(target.position.x - offset.x, xMin, xMax), Mathf.Clamp(target.position.y + offset.y, yMin, yMax), transform.position.z);
}
if (lerpCameraMovementOnX)
{
transform.position = Vector3.Lerp(transform.position, tempFollowedObjectWithOffset, lerpSpeed * Time.deltaTime);
}
else
{
transform.position = tempFollowedObjectWithOffset;
}
}
if (Player.Instance.IsDead == true)
{
target = null;
return;
}
}
}
Your answer
Follow this Question
Related Questions
Super Monkey Ball type Camera? 2 Answers
How to make your character move? 7 Answers
Follow an object with camera -1 Answers
Character Runs Off Camera 2 Answers
Camera follow help? 1 Answer