애니메이터 메서드 -> [https://docs.unity3d.com/ScriptReference/Animator.html]
ex)
const string hitString = "Hit";
private void OnCollisionEnter(Collision collision)
{
animator.SetTrigger("hitString");
}
아래 코드가 짜여진 방식은 시네머신 카메라를 활용할 때 특히, fov를 변경해 줌인, 아웃 할때 자주 사용되는 방식이라고 한다.
// 시네머신에 부착.
public class CameraControler : MonoBehaviour
{
[SerializeField] float minFOV = 20f;
[SerializeField] float maxFOV = 120f;
[SerializeField] float zoomDuration = 1f;
[SerializeField] float zoomSpeedModifier = 5f;
CinemachineCamera cinemachineCamera;
private void Awake()
{
cinemachineCamera = GetComponent<CinemachineCamera>();
}
public void ChangeCameraFOV(float speedAmount)
{
StopAllCoroutines(); // Unity Built in method which stops all coroutines to make sure coroutines activate only once at a time.
StartCoroutine(ChangeFOVRoutine(speedAmount));
}
IEnumerator ChangeFOVRoutine(float speedAmount)
{
float startFOV = cinemachineCamera.Lens.FieldOfView;
float targetFOV = Mathf.Clamp(startFOV + speedAmount * zoomSpeedModifier, minFOV, maxFOV);
float elapsedTime = 0f;
while (elapsedTime < zoomDuration)
{
float t = elapsedTime/zoomDuration;
elapsedTime += Time.deltaTime;
cinemachineCamera.Lens.FieldOfView = Mathf.Lerp(startFOV, targetFOV, t);
yield return null;
}
cinemachineCamera.Lens.FieldOfView = targetFOV;
}
}
while (elapsedTime < zoomDuration) 루프를 통해 매 프레임마다 현재 시간에 비례하여 FOV를 Mathf.Lerp를 사용해 선형 보간(Lerp) 방식으로 변화시킨다. 순차적 코드 흐름자체 멈춤기능 (StopAllCoroutines();)비동기 실행yield return null;을 사용해 프레임 단위로 실행되기 때문에, 메인 스레드를 블록하지 않고 자연스러운 애니메이션을 구현할 수 있다.간결 & 직관적 코드파티클을 사용해 부스팅 이펙트를 만들자.
시네머신 카메라의 자식 오브젝트로 파티클을 만들고, shape - circle로 변경, z 값을 1 정도로 해 카메라에 보이도록 설정. (값은 알아서 조절하자)

새로운 메테리얼을 만들고, 셰이더를 파티클/스탠다드 언릿으로 변경.

파티클 인스펙터 렌더러에 부착.

메테리얼을 아래 처럼 설정해준다.
이번엔 긴 삼각형을 사용하고 어떤것을 쓸지는 알아서!

다시 파티클 시스템의 인스펙터 - 렌더러 - 렌더러 모드를 Stretched Billboard
빌보드는 파티클이 항상 카메라를 향하도록 하는 옵션, stretched는 중심에서 바깥으로 당기듯이 연출하는 옵션인듯.
start speed, size, length scale, radius, radius thickness등 만지면, 그럴싸한 이팩트가 나옴.
Emission - Rate over time - 25 이것도 해보니 괜찮네.



그냥 이런 용도.