Unity/Unity
[Unity 2D]카메라 캐릭터 추적 & 경계 처리 - Hide
zz0zz9
2025. 5. 2. 14:58
반응형
반응형
결과
스크립트 생성 및 작성
MainCamera에 넣을 스크립트를 생성한다.
(이름은 아무거나 상관없는데 Camera라고 짓는 건 비추)
using UnityEngine;
public class CameraFollow : MonoBehaviour
{
public Transform player;
private Vector3 offset=new Vector3(0,0,-10);
void Update()
{
if(player!=null) transform.position=player.position+offset;
}
}
적용
스크립트를 MainCamera에 넣고 Player라고 쓰인 부분에 따라다니고자 하는 오브젝트 넣기
이렇게 해서 카메라는 플레이어를 따라다닐 수 있게 됐다.
이를 응용해 카메라가 맵의 경계에 도달했을 때 어떻게 동작할지를 정의한 두 가지 방법을 소개한다.
(카메라 이동만 보여주기 위해 플레이어와 경계선의 충돌 처리는 생략)
카메라 이동 ver 1.
맵의 경계가 카메라 화면 중앙에 도달하면 카메라는 해당 방향으로 더 이상 이동하지 않는다.
결과
스크립트
using UnityEngine;
public class CameraFollow : MonoBehaviour
{
public Transform player;
public float minX, maxX, minY, maxY;
void Update()
{
if(player==null) return;
float camX=Mathf.Clamp(player.position.x,minX,maxX);
float camY=Mathf.Clamp(player.position.y,minY,maxY);
transform.position=new Vector3(camX,camY,-10f);
}
}
(minX, maxX, minY, maxY는 각각 위와 같이 설정해 줬다.)
카메라 이동 ver 2.
카메라의 시야가 맵의 경계에 닿으면 카메라는 해당 방향으로 더 이상 이동하지 않는다.(프레임에 가둬진 느낌)
결과
스크립트
using UnityEngine;
public class CameraFollow : MonoBehaviour
{
public Transform player;
public float minX, maxX, minY, maxY;
private float camWidth;
private float camHeight;
private void Start()
{
camHeight=Camera.main.orthographicSize;
camWidth=camHeight*Camera.main.aspect;
}
void Update()
{
if(player==null) return;
float x=Mathf.Clamp(player.position.x,minX+camWidth,maxX-camWidth);
float y=Mathf.Clamp(player.position.y,minY+camHeight,maxY-camHeight);
transform.position=new Vector3(x,y,-10f);
}
}
밤산책
반응형