반응형
이번 글에서는 지정한 경계 값 안에서 대상 객체를 따라 이동하는 카메라 구현 방법에 대해 알아보도록 하겠습니다. 이 글은 이전에 작성한 다음 글의 연장선상에서 진행하도록 하겠습니다. 기본 설정은 아래의 글을 참고해 주세요.
- 우선 테스트를 위해 Ground 의 크기를 키우도록 하겠습니다. Ground 의 Transform 과 Material 설정을 다음과 같이 수정해 줍니다.
- Main Camera 에 FollowCam 이름으로 새 스크립트를 생성합니다.
- 스크립트를 다음과 같이 작성해 줍니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FollowCam : MonoBehaviour
{
// 카메라가 따라다닐 대상
public Transform target;
// 카메라가 대상을 따라가는 속도
public float smooth = 0.1f;
// 카메라 위치 조정
public Vector3 adjustCamPos;
// 카메라 경계 설정
public Vector2 minCamLimit;
public Vector2 maxCamLimit;
// Update is called once per frame
void Update()
{
if (target == null) return;
// 카메라의 대상 위치간의 보간
Vector3 pos = Vector3.Lerp(transform.position, target.position, smooth);
// 대상과 한계 위치에 따른 카메라 위치
transform.position = new Vector3(
Mathf.Clamp(pos.x, minCamLimit.x, maxCamLimit.x) + adjustCamPos.x,
Mathf.Clamp(pos.y, minCamLimit.y, maxCamLimit.y) + adjustCamPos.y,
-10f + adjustCamPos.z);
}
}
- 이 코드에서 중요한 것은 Vector3.Lerp 와 Mathf.Clamp 입니다.
- Vector3.Lerp 함수는 첫 번째 인자와 두 번째 인자 사이의 값을 세 번째 인자의 값에 따라 계산된 결과를 리턴합니다. 예를 들어 tranform.position = (0f, 0f, 0f), target.position = (1f, 1f, 1f), smooth = 0.5f 라고 하면 결과는 (0.5f, 0.5f, 0.5f) 가 됩니다.
- Mathf.Clamp 는 첫 번째 인자로 주어진 값의 범위가 두 번째와 세 번째 인자의 값으로 한정됩니다.
- FollowCam 에 있는 Target 에 Player 객체를 연결하고 아래와 같이 나머지를 설정해 줍니다.
이제 Play 하고 캐릭터를 움직여 보면 아래와 같이 카메라가 캐릭터를 따라 움직이다가 경계 값에 설정한 위치를 넘어가면 캐릭터를 따라 움직이지 않게 됩니다.
반응형
'게임 프로그래밍 > 유니티 활용' 카테고리의 다른 글
[유니티 활용] ScriptableObject 로 HP Bar 만들기 - #1 (1) | 2022.12.29 |
---|---|
[유니티 활용] StateMachine 과 몬스터 AI (2) | 2022.12.26 |
[유니티 활용] BlendTree 를 이용한 2D 점프 애니메이션 (2) | 2022.12.23 |
[유니티 활용] Platform Effector 2D 를 이용한 관통 플랫폼 만들기 (1) | 2022.12.22 |
[유니티 활용] Rigidbody2d 를 이용한 캐릭터의 이동과 점프 (4) | 2022.12.21 |
댓글