Quantcast
Channel: Questions in topic: "follow"
Viewing all articles
Browse latest Browse all 536

Camera script

$
0
0
Hi, I would like the camera to follow the player. So far I have kind of made it work, but only to an extent; the camera does not follow the player while jumping and "lags" behind the player for most parts until it simply stops following the player altogether. I borrowed the script that came with the free Unity download using UnityEngine; using System.Collections; public class CameraFollow : MonoBehaviour { public float xMargin = 1f; // Distance in the x axis the player can move before the camera follows. public float yMargin = 1f; // Distance in the y axis the player can move before the camera follows. public float xSmooth = 8f; // How smoothly the camera catches up with it's target movement in the x axis. public float ySmooth = 8f; // How smoothly the camera catches up with it's target movement in the y axis. public Vector2 maxXAndY; // The maximum x and y coordinates the camera can have. public Vector2 minXAndY; // The minimum x and y coordinates the camera can have. private Transform player; void Awake () { // Setting up the reference. player = GameObject.FindGameObjectWithTag("Player").transform; } bool CheckXMargin() { // Returns true if the distance between the camera and the player in the x axis is greater than the x margin. return Mathf.Abs(transform.position.x - player.position.x) > xMargin; } bool CheckYMargin() { // Returns true if the distance between the camera and the player in the y axis is greater than the y margin. return Mathf.Abs(transform.position.y - player.position.y) > yMargin; } void FixedUpdate () { TrackPlayer(); } void TrackPlayer () { // By default the target x and y coordinates of the camera are it's current x and y coordinates. float targetX = transform.position.x; float targetY = transform.position.y; // If the player has moved beyond the x margin... if(CheckXMargin()) // ... the target x coordinate should be a Lerp between the camera's current x position and the player's current x position. targetX = Mathf.Lerp(transform.position.x, player.position.x, xSmooth * Time.deltaTime); // If the player has moved beyond the y margin... if(CheckYMargin()) // ... the target y coordinate should be a Lerp between the camera's current y position and the player's current y position. targetY = Mathf.Lerp(transform.position.y, player.position.y, ySmooth * Time.deltaTime); // The target x and y coordinates should not be larger than the maximum or smaller than the minimum. targetX = Mathf.Clamp(targetX, minXAndY.x, maxXAndY.x); targetY = Mathf.Clamp(targetY, minXAndY.y, maxXAndY.y); // Set the camera's position to the target position with the same z component. transform.position = new Vector3(targetX, targetY, transform.position.z); } } Does anyone know how to make the camera keep track of my player on both the x and y axis and tracks the player spot on - the player are not supposed to move to the end of the screen before the camera follows.

Viewing all articles
Browse latest Browse all 536

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>