Advertisement
Guest User

Untitled

a guest
Nov 21st, 2014
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. public class CameraFollow : MonoBehaviour
  5. {
  6. public GameObject levelBorder;
  7. public GameObject player;
  8. private Rect m_viewPlane;
  9. private Bounds levelBounds;
  10.  
  11. //triggers before Start
  12. void Awake()
  13. {
  14. //player = PlayerManager.Instance.PlayerObject;
  15.  
  16. if (player != null)
  17. {
  18. Vector3 playerPosition = new Vector3(
  19. player.transform.position.x,
  20. player.transform.position.y,
  21. transform.position.z);
  22.  
  23. transform.position = playerPosition;
  24. }
  25.  
  26. ResetCameraBorder(levelBorder);
  27. }
  28.  
  29. public void ResetCameraBorder(GameObject newLevelBorder)
  30. {
  31. if (levelBorder != null && levelBorder.collider2D != null)
  32. levelBounds = newLevelBorder.collider2D.bounds;
  33. else
  34. Debug.Log("MainCamera: level border not found or does not contain BoxCollider2D! Camera will be broken!");
  35. }
  36.  
  37. void LateUpdate()
  38. {
  39. /*
  40. if (player == null)
  41. {
  42. player = PlayerManager.Instance.PlayerObject;
  43. }
  44. */
  45.  
  46. if (player != null)
  47. {
  48. Vector3 playerPosition = new Vector3(
  49. player.transform.position.x,
  50. player.transform.position.y,
  51. transform.position.z);
  52.  
  53. transform.position = playerPosition;
  54. }
  55.  
  56. if (levelBounds != null)
  57. {
  58.  
  59. Vector3 bottomLeft = camera.ScreenToWorldPoint(new Vector3(0.0f, 0.0f, -transform.position.z));
  60. Vector3 topRight = camera.ScreenToWorldPoint(new Vector3(camera.pixelWidth, camera.pixelHeight, -transform.position.z));
  61.  
  62. m_viewPlane = new Rect(bottomLeft.x, bottomLeft.y, topRight.x - bottomLeft.x, topRight.y - bottomLeft.y);
  63.  
  64. Vector3 newPos = transform.position;
  65.  
  66. newPos.x = Mathf.Clamp(newPos.x, levelBounds.min.x + (m_viewPlane.width / 2), levelBounds.max.x - (m_viewPlane.width / 2));
  67.  
  68. newPos.y = Mathf.Clamp(newPos.y, levelBounds.min.y + (m_viewPlane.height / 2), levelBounds.max.y - (m_viewPlane.height / 2));
  69.  
  70. transform.position = newPos;
  71. }
  72.  
  73. }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement