Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- public class CameraFollow : MonoBehaviour
- {
- public GameObject levelBorder;
- public GameObject player;
- private Rect m_viewPlane;
- private Bounds levelBounds;
- //triggers before Start
- void Awake()
- {
- //player = PlayerManager.Instance.PlayerObject;
- if (player != null)
- {
- Vector3 playerPosition = new Vector3(
- player.transform.position.x,
- player.transform.position.y,
- transform.position.z);
- transform.position = playerPosition;
- }
- ResetCameraBorder(levelBorder);
- }
- public void ResetCameraBorder(GameObject newLevelBorder)
- {
- if (levelBorder != null && levelBorder.collider2D != null)
- levelBounds = newLevelBorder.collider2D.bounds;
- else
- Debug.Log("MainCamera: level border not found or does not contain BoxCollider2D! Camera will be broken!");
- }
- void LateUpdate()
- {
- /*
- if (player == null)
- {
- player = PlayerManager.Instance.PlayerObject;
- }
- */
- if (player != null)
- {
- Vector3 playerPosition = new Vector3(
- player.transform.position.x,
- player.transform.position.y,
- transform.position.z);
- transform.position = playerPosition;
- }
- if (levelBounds != null)
- {
- Vector3 bottomLeft = camera.ScreenToWorldPoint(new Vector3(0.0f, 0.0f, -transform.position.z));
- Vector3 topRight = camera.ScreenToWorldPoint(new Vector3(camera.pixelWidth, camera.pixelHeight, -transform.position.z));
- m_viewPlane = new Rect(bottomLeft.x, bottomLeft.y, topRight.x - bottomLeft.x, topRight.y - bottomLeft.y);
- Vector3 newPos = transform.position;
- newPos.x = Mathf.Clamp(newPos.x, levelBounds.min.x + (m_viewPlane.width / 2), levelBounds.max.x - (m_viewPlane.width / 2));
- newPos.y = Mathf.Clamp(newPos.y, levelBounds.min.y + (m_viewPlane.height / 2), levelBounds.max.y - (m_viewPlane.height / 2));
- transform.position = newPos;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement