Follow Camera 개요
Follow Camera는 메인 카메라가 주인공 캐릭터를 자연스럽게 따라가도록 만든다.
그러나 이런 방법은 제약사항이 생긴다.
제약 사항
- 캐릭터가 이동할 때
→ 카메라가 즉시 따라가지 않고 약간 늦게 이동 - 캐릭터가 회전할 때
→ 카메라도 부드럽게 지연되어 회전
이러한 제약을 방지하기 위해 Follow Camera 효과는
- 직접 스크립트를 작성해 구현할 수도 있고
- Cinemachine 기능을 활용해 보다 쉽게 구현할 수도 있다.
Cinemachine Camera 주요 속성
Tracking Target
- 카메라가 어떤 대상을 따라갈 것인지를 지정하는 옵션
- 일반적으로 주인공 캐릭터의 Transform을 설정
- 이 설정을 통해 카메라는 대상의 이동과 회전을 기준으로 동작한다.
카메라 흔들림(Shaking) 효과
Cinemachine에서는 Noise 기능을 이용해 카메라 흔들림 효과를 구현할 수 있다.
Noise 설정
- Noise → Basic Multi Channel Perlin
- 시간에 따라 변하는 자연스러운 흔들림을 생성
Perlin 알고리즘
- Perlin Noise는
자연스럽고 연속적인 노이즈를 생성하는 대표적인 알고리즘 - 카메라 흔들림, 환경 효과, 애니메이션 변형 등에 자주 사용된다.
이를 통해
- 달리기 시 상하 흔들림
- 피격 시 카메라 충격 효과
- 긴장감 있는 연출
등을 자연스럽게 표현할 수 있다.
유니티에서 궤적 표현방법
유니티에서는 궤적을 표현할 때 Particle System이나 Trail Renderer를 주로 사용한다.
Trail Renderer의 특징
Trail Renderer는 항상 메인 카메라와 90도로 직교하도록 자동 정렬된다.
따라서 단면 메쉬 구조임에도 불구하고, 어느 방향에서 바라보더라도 적용된 텍스처가 정상적으로 보인다.
오브젝트가 이동함에 따라 전진 방향으로 메쉬를 실시간 생성하며 궤적을 남긴다.
충돌 지점 기반 스파크 효과 처리
private void OnCollisionEnter(Collision other)
{
if (other.collider.CompareTag("Bullet"))
{
Destroy(other.gameObject);
ContactPoint cp = other.GetContact(0);
// 위치
Vector3 hitPoint = cp.point;
// 충돌지점 법선벡터
Vector3 hitNormal = -cp.normal;
// 법선벡터를 쿼터니언 타입으로 변환
Quaternion rotation = Quaternion.LookRotation(hitNormal);
GameObject effect = Instantiate(sparkEffect, hitPoint, rotation);
Destroy(effect, 0.6f);
}
}
충돌 지점 기반 스파크 효과 처리
물체가 충돌할 때 충돌 좌표(Contact Point) 를 얻고,
충돌 지점의 법선 벡터(Normal Vector) 를 활용하여 스파크 이펙트를 생성한다.
- Collision.GetContact(int index)
→ 충돌 지점의 좌표와 법선 정보를 가진 ContactPoint 반환 - cp.point
→ 실제 충돌이 발생한 월드 좌표 - cp.normal
→ 충돌 지점 평면에 수직인 법선 벡터(평면 위에서 수직을 이루는 벡터)
법선 벡터 활용
벽에 충돌한 뒤 바깥 방향으로 스파크가 튀게 하려면,
충돌 지점의 법선 벡터(cp.normal)의 반대 방향 벡터를 사용해야 한다.
Vector3 hitNormal = -cp.normal;
회전값(Quaternion) 생성
Instantiate의 세 번째 매개변수는 회전값(rotation) 이며,
유니티에서는 회전을 Quaternion(쿼터니언) 단위로 처리한다.
따라서 방향 벡터를 그대로 사용할 수 없고,
벡터 → 쿼터니언 변환이 필요하다.
Quaternion rotation = Quaternion.LookRotation(hitNormal);
컴포넌트 런타임 추가
유니티에서는 스크립트 실행 중에도 컴포넌트를 동적으로 추가할 수 있다.
AddComponent<T>();
Rigidbody 폭발력 처리
Rigidbody의 AddExplosionForce() 메서드를 사용하면
폭발 중심을 기준으로 물체를 튕겨내는 힘을 줄 수 있다.
AddExplosionForce(폭발력(옆으로 튀는 힘) , 폭발 원점, 반경, 폭발력(위로 솟구 치는 힘))
'인프런 강의' 카테고리의 다른 글
| [인프런 유니티 강의 후기] 유니티 입문 강의 추천 | 절대강좌! 유니티 6 TPS 마스터클래스 (0) | 2026.04.28 |
|---|---|
| 유니티 6 - TPS 게임으로 배우는 유니티 마스터클래스 정리(2회차) (0) | 2026.02.04 |
| 유니티 6 - TPS 게임으로 배우는 유니티 마스터클래스 정리(1회차) (0) | 2026.01.30 |