개인 과제를 시작했다!
Input System을 복습했고,
Animation을 제작했다.
생각보다 오랜만에 해서 어려웠다.
그리고 GameManger를 쓰는 걸 까먹었다..!
내일 Nickname을 설정할 때 생성해줘야겠다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MainCamera : MonoBehaviour
{
public Transform target;
Vector3 velocity = Vector3.zero;
[Range(0, 1)]
public float smoothTime;
public Vector3 positionOffset;
private void Awake()
{
target = GameObject.FindGameObjectWithTag("Player").transform;
}
private void LateUpdate()
{
Vector3 targetPosition = target.position + positionOffset;
transform.position = Vector3.SmoothDamp(transform.position, targetPosition, ref velocity, smoothTime);
}
}
public Transform target
카메라가 따라갈 대상을 설정하는 public 변수다.
이 변수에는 플레이어 또는 다른 게임 오브젝트의 Transform 컴포넌트가 할당된다.
Vector3 velocity = Vector3.zero
카메라 이동을 부드럽게 하기 위한 보간에 사용되는 변수다.
초기에는 Vector3.zero로 초기화된다.
[Range(0, 1)] public float smoothTime
카메라 이동을 얼마나 부드럽게 할지를 설정하는 public 변수다. [Range(0, 1)] 속성을 사용하여 값을 0부터 1 사이로 제한한다.
0에 가까울수록 부드럽게 움직이고, 1에 가까울수록 빠르게 움직인다.
public Vector3 positionOffset
대상 오브젝트와의 상대적인 위치를 설정하는 public 변수다.
이 변수를 사용하여 카메라와 대상 간의 거리 및 위치를 조절할 수 있다.
private void Awake()
스크립트가 시작될 때 호출되는 Awake 메서드다.
"target" 변수에 "Player" 태그를 가진 오브젝트의 Transform을 찾아 할당한다.
private void LateUpdate()
매 프레임마다 호출되는 LateUpdate 메서드다.
LateUpdate는 주로 카메라 제어와 관련된 로직을 처리하는 데 사용된다.
이 메서드에서는 현재 카메라의 위치를 부드럽게 대상 오브젝트에 맞춘다.
Vector3 targetPosition = target.position + positionOffset
대상 오브젝트의 위치에 "positionOffset"을 더하여 카메라가 따라갈 목표 위치를 계산한다.
transform.position = Vector3.SmoothDamp(transform.position, targetPosition, ref velocity, smoothTime)
현재 카메라의 위치를 부드럽게 따라가도록 업데이트한다.
SmoothDamp 함수를 사용하여 현재 위치에서 목표 위치로 부드럽게 이동한다.
"velocity" 변수는 카메라 이동에 사용되며, 이동이 완료될 때 자동으로 업데이트된다.
생각보다 머리가 안돌아간다.
오랜만에 해서 그런지 재밌으면서도 어렵다!
최대한 자료를 많이 찾아보고, 열심히 제작해야지.
속도를 높이자!