목록2025/03/12 (3)
cyphen156

앞서 글에서 말했듯이 벡터의 이동은 같은 차원 내에서는 할 수 없다. 그래서 전단변환을 응용하여 물체의 이동을 구현하려고 사용하게 된 것이 Affine 변환이다. 개념적으로 이동을 표현하려 하는 물체보다 상위 차원을 사용하여 상위차원의 원점을 기준으로 물체의 차원에 해당하는 점들을 전단변환 한 것이다. 이것을 변환 행렬을 통하여 연산하고, 변환 행렬은 다음과 같이 표현된다.아핀공간에서 점과 점을 더하면 차원 상수가 1이라는 것을 보장할 수가 없어진다수식으로 표현하면 P1(x1, y1, 1) + P2(x2, y2, 1) = P3(x1 + x2, y1 + y2, 2)라는 3차원 좌표가 변경되어버린다는 문제가 생긴다. 그렇기 때문에 특정 스칼라 (a, b)를 곱하여 점과 점을 더한다면 차원수를 1로 유지할 수..

캐릭터를 한개 집어넣었는데 사망 모션 등 상하체, 팔 다리 등을 분리하여 제어하고 싶을 때가 있다. 그럴때 쓰는게 애니메이션에 있는 아바타 마스크이다.아바타 마스크는 다음과 같이 만들어서 개별 컨트롤러를 생성하는 것이다. 그리고 나서 코드에서 다음과 같이 레이어에 대한 가중값을 제어 할 수 있다. animator.SetLayerWeight(1, 1);그러고 나면 다음과 같이 플레이어 애니메이션이 재생된다.

유니티에서는 애니메이션 클립에 이벤트를 추가하여 특정 프레임중에 함수를 실행할 수 있다.가령 걷는 이벤트 중에 발소리가 나야 한다고 했을 때 다음과 같이 코드를 추가하고 이벤트를 통해 함수를 실행할 수 있다.PlayWeaponChangeSound{ if (audioClipWeaponChange != null) { audioSource.PlayOneShot(audioClipWeaponChange); }}이렇게 연결해주면 15번 프레임이 재생될 때 마다 사운드가 재생된다.