1. 카메라 스크립트 제작
- 캐릭터가 이동하면 카메라도 이동해야 한다!
→ 카메라는 캐릭터를 알고 있어야 한다는 뜻.
- 카메라의 갱신은 게임세계가 모두 갱신된 후 마지막으로 갱신되어야 한다. (LateUpdate)
→ 카메라의 위치 업데이트는 캐릭터 이동 후 계산되어야 한다는 뜻.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CustomCamera : MonoBehaviour
{
Transform player = null;
Vector3 playerOldPos = Vector3.zero;
public Transform PLAYER
{
get { return player; }
set { player = value; }
}
private void Start()
{
playerOldPos = player.position;
}
private void LateUpdate()
{
// 캐릭터를 따라다니는 카메라
// 캐릭터가 이동한 delta(양)만큼 카메라를 이동해준다.
Vector3 delta = player.position - playerOldPos;
transform.position += delta;
playerOldPos = player.position;
}
}
2-1. 메인 카메라에 스크립트 붙이기 → player변수쪽 코드 수정
OR
2-2. 캐릭터 스크립트에 아래 코드 삽입
private void Awake()
{
// 플레이어의 인스턴스가 생성될때 카메라에 캐릭터를 따라다니게 하는 컴포넌트 붙여주기
CustomCamera script = Camera.main.gameObject.AddComponent<CustomCamera>();
script.PLAYER = transform;
}
3. 부드러운 움직임 추가
Vector3 pos;
pos = Vector3.Lerp(transform.position, transform.position + delta, Time.deltaTime * 5);
4. 카메라 이동 영역 제한
// 카메라 이동 영역 제한
float clampX = Mathf.Clamp(transform.position.x, -4f, 4f);
float clampY = Mathf.Clamp(transform.position.y, 3f, 4f);
float clampZ = Mathf.Clamp(transform.position.z, -10f, -5f);
pos.x = clampX;
pos.y = clampY;
pos.z = clampZ;
transform.position = pos;
'Unity' 카테고리의 다른 글
제너릭 클래스 (0) | 2021.05.26 |
---|---|
Resources 사용해보기 (0) | 2021.05.24 |
마우스 입력한 곳으로 움직이기 (0) | 2021.05.21 |
마우스 클릭 (0) | 2021.05.21 |
상속 (0) | 2021.04.16 |