using UnityEngine;
using System.Collections;


public class CameraManager : MonoBehaviour {

ย ย ย  public Transform playerTr; //ํ”Œ๋ ˆ์ด์–ด ์ขŒํ‘œ๋ฅผ ์•Œ์•„์˜ค๊ธฐ ์œ„ํ•ด ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์—ฌ๊ธฐ ๋Œ์–ด๋ถ™์ด๋ฉด ๋จ.
ย ย ย  public Vector2 xLimit; // xLimit.x๋Š” x์ถ• ์ด๋™ ์ตœ์†Œ๊ฐ’, xLimit.y๋Š” x์ถ• ์ด๋™ ์ตœ๋Œ€๊ฐ’. ์‹ ์—์„œ ์นด๋ฉ”๋ผ์˜ ์ œํ•œ๊ฐ’์„ ๋จผ์ € ํ™•์ธํ•ด์„œ ๊ทธ๊ฑธ ์ ์ ˆํ•˜๊ฒŒ ๋„ฃ์–ด์ฃผ๋ฉด ๋จ.
ย ย ย  public Vector2 yLimit; //์œ„์™€ ๊ฐ™์Œ.
ย ย ย  public Vector2 cameraOffSet; // ์นด๋ฉ”๋ผ๋ฅผ ์™ผ์ชฝ์ด๋‚˜ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์น˜์šฐ์น˜๊ฒŒ ํ•จ. ์˜ˆ๋กœ cameraOffSet.x๊ฐ’์„ 1์ •๋„๋กœ ์˜ฌ๋ฆฌ๋ฉด ์นด๋ฉ”๋ผ๊ฐ€ ์ฃผ์ธ๊ณต๋ณด๋‹ค ์•ฝ๊ฐ„ ์˜ค๋ฅธ์ชฝ์—์„œ ์ฐ์–ด์„œ ํ™”๋ฉด์— ์ฃผ์ธ๊ณต์ด ์™ผ์ชฝ์— ์น˜์šฐ์ณ ๋‚˜์˜ค๊ฒŒ ํ•จ.

ย ย ย  Transform cameraTr; //์ด ์นด๋ฉ”๋ผ์˜ ํŠธ๋žœ์Šคํผ.


ย ย ย  void Start()
ย ย ย  {
ย ย ย ย ย ย ย  cameraTr = transform; //์ด ์นด๋ฉ”๋ผ์˜ ํŠธ๋žœํผ์„ ์„ ์–ธ. ๊ทผ๋ฐ ์œ ๋‹ˆํ‹ฐ5์—์„œ๋Š” ์ด๋ ‡๊ฒŒ ์•ˆํ•ด๋„ ๋œ๋‹ค๋Š” ๋ง์ด ์žˆ๋˜๋ฐ ๊ทธ๋ƒฅ ๋ถˆ์•ˆํ•˜๊ธฐ๋„ ํ•˜๊ณ  ๊ตฌ๋ถ„ํ•˜๊ธฐ ํŽธํ•ด์„œ ์ด๋ ‡๊ฒŒ ์”€.

ย ย ย  }


ย ย ย  void LateUpdate()
ย ย ย  {
ย ย ย ย ย ย ย  //Mathf.Clamp(ํ˜„์žฌ๊ฐ’, ์ตœ์†Œ๊ฐ’, ์ตœ๋Œ€๊ฐ’) ์€ ํ˜„์žฌ๊ฐ’์ด ์ตœ์†Œ ์ตœ๋Œ€์น˜๋ฅผ ๋„˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ์ž„. ๊ทธ๋ž˜์„œ ์ตœ์†Œ๊ฐ’๋ณด๋‹ค ์ ์€ ์ˆ˜๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์ตœ์†Œ๊ฐ’, ๋ฐ˜๋Œ€๋กœ๋Š” ์ตœ๋Œ€๊ฐ’์ด ๋‚˜์˜ด.
ย ย ย ย ย ย ย  //playerTr.position.x ์— cameraOffset.x๋ฅผ ๋”ํ•ด ํ˜„์žฌ ์œ„์น˜์—์„œ ์‚ด์ง offset๋งŒํผ ๋ฐ€์–ด์คŒ. 0์„ ๋„ฃ์„๊ฑฐ๋ฉด ๊ทธ๋ƒฅ cameraOffset์„ ๋นผ๋ฒ„๋ฆฌ๋ฉด ๋จ.
ย ย ย ย ย ย ย  cameraTr.position = new Vector3(
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  Mathf.Clamp(playerTr.position.x + cameraOffSet.x, xLimit.x, xLimit.y), //cameraTr.position์˜ x์ขŒํ‘œ๋Š” xLimit.x์ด์ƒ xLimit.y์ดํ•˜๋‹ค.
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  Mathf.Clamp(playerTr.position.y + cameraOffSet.y, yLimit.x, yLimit.y), //์œ„์™€ ๊ฐ™์Œ.
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย  -1); //-1์€ Orthographic์นด๋ฉ”๋ผ ์‹œ ๋’ค๋กœ ์‚ด์ง๋งŒ ๋ฐ€์–ด์ฃผ๋ฉด ๋˜์„œ ๊ทธ๋ ‡๊ฒŒ ํ•œ ๊ฑฐ์ž„.
ย ย ย  }
}


์ด๊ฑธ ์นด๋ฉ”๋ผ์— ๋ถ™์—ฌ์„œ ์ธ์ŠคํŽ™ํ„ฐ์— ํ”Œ๋ ˆ์ด์–ด๋ž‘ ๊ฐ’๋“ค์„ ์ ๋‹นํžˆ ์„ธํŒ…ํ•˜๋ฉด ๋ ๊ฑฐ์ž„. ๊ทธ๋ฆฌ๊ณ  ๋‚˜์ค‘์— ์‘์šฉํ•ด์„œ ์ž๊ธฐ ๊ฒœ์— ๋งž๊ฒŒ ํ•˜๋‚˜์”ฉ ๊ณ ์ณ๋‚˜๊ฐ€๋ฉด ๋ ๊ฑฐ์ž„.


ํ„ฐ์น˜ ์ปจํŠธ๋กค์€ ํ•œ๋ฒˆ ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณด๋ฉด ๊ฒฝํ—˜์ด ๋˜๊ณ  ์ข‹๊ธด ํ•œ๋ฐ ์ฝ”๋“œ๋Ÿ‰์ด ๋งŽ๊ณ  ์„ค๋ช…์ด ๋ณต์žกํ•ด์„œย ์—ฌ๊ธฐ๋‹ค ์“ฐ๊ธด ์ ์ ˆํ•˜์ง€ ์•Š์Œ. ์‚ฌ์‹ค ๋‚˜๋„ ์˜ˆ์ „์— ํ•œ ๋‘๋ฒˆ์ฏค ๋งŒ๋“ค์–ด๋ดค๋Š”๋ฐ ๊ทธ๋ƒฅ ์—์…‹์Šคํ† ์–ด์—์„œ ์‚ฌ์„œ ์“ฐ๋Š”๊ฒŒ ๋‚ซ๋”๋ผ.ย  ๋‚œ InControl ์ด๋ผ๋Š” ์—์…‹์„ ์”€.ย pc์—์„œ ์ง„๋™๊นŒ์ง€ ์ง€์›ํ•จ. ์•ˆ๋“œ๋กœ์ด๋“œ ์ปจํŠธ๋กค๋Ÿฌ๋„.


๋‹น์žฅ ์—์…‹์„ ๊ตฌ์ž…ํ•˜์ง„ ๋ง๊ณ  ๋‚˜์ค‘์—ย ์ƒ๊ฐ๋‚˜๋ฉด ์ด๊ฑธ๋กœ ํ•œ๋ฒˆ ๋ฐ”๊ฟ”๋ด๋ผ.