Untitled

Cinemachine Impulse Listener | Cinemachine | 2.9.7

특정 이벤트 때 화면이 흔들리는 것을 구현 할려던 와중에 CineMachine의 Impulse Listner 기능을 알게 되었다.

CineMachine의 확장 기능 중 하나 인데, Listener를 달아두고, 이벤트를 발생시킬 오브젝트에는 impulse Source 컴포넌트를 달아서 Listener가 이 이벤트를 감지하게 하는 방식이다.

Cinemachine Impulse Sources | Cinemachine | 2.9.7

사용 방법도 몹시 간단하다. 위에 이야기한대로 이벤트를 발생 시킬 오브젝트에 Impulse Source 컴포넌트를 달아주자.

Untitled

public class Weapon : MonoBehaviour
{
   
    [SerializeField] protected CinemachineImpulseSource impulse;
		[SerializeField] protected float damage;
		
		/*
		.
		. etc...
		.
		.*/
		
    public virtual void Attack(Vector3 dir)
    {
         impulse.GenerateImpulseWithForce(damage/20);
    }

}

그리고 이벤트를 발생할 스크립트에 CinemachineImpulseSource 를 참조 시켜준다음 GenerateImpulseWithForce(float force) 메서드로 흔들어 주면 된다.

공격력에 비례하여 화면 흔들림 크기를 조절하고자 매개변수로 damage를 생으로 넣어줬는데 너무 크게 흔들려서(…) 좀 조절해주었다.

Honeycam 2024-03-12 16-34-08.gif

복잡한 소스 작성없이 날먹 성공이다.