프로그래밍 농장

Starter Asset 스터디 정리 포스팅 [Unity] 본문

Unity

Starter Asset 스터디 정리 포스팅 [Unity]

Tennessee201 2022. 9. 19.
728x90

스타터 에셋에서 사용하는 Input Action Asset과 기존 입력 방식인 Input의 차이점에 대하여 정리하고자 한다. 

button, axis 등 특정 하드웨어의 게임내 기능에 직접 매핑하는 형식이다. -> 이는 장치에 의존되고 나중에 재구성이 어렵다는 단점이 존재한다. 

또한 다른 유형의 입력 컨트롤을 처리하는 경우 Update()에서의 if문에 계속 추가해주어야한다.  그리고 플레이어가 컨트롤을 자신의 스타일에 맞도록 다시 매핑하게 하기 어렵다는 단점이 있다. 

이에 반해, 새로운 입력 시스템인 Input Action을 사용하게 되면, 특정 하드웨어(button,axis등)을 참조하는 대신 작업에 해당하는 이벤트에 의해 트리거된다. 

 

[Unity] Input Action을 사용해야 하는 이유

Unity의 기존 Input 클래스보다 Input Action 클래스 를 사용하면 좋은 점이 무엇일지 정리해보려 한다

velog.io

Player Input 컴포넌트의 Behavior가 SendMessage이고 키 입력이 들어왔을 때 Player Action에 등록해 놓은 바인딩 이름의 앞에 On이 붙여진 함수가 실행된다.

 


CameraRotation에서 Mouse의 Pointer를 180도이상돌리게되면 -180~0으로 점점 줄어들고, 0 에도달하게되면다시 0~ 180까지 늘어다는 구조이다. 이는 아래와 같이 코드상에서 초기화를 진행해주었기에 부드럽게 화면에 묘사될수있는것이다.

CameraRotation()

 

 

또한 아래의 코드는 Animatior가 아닌, AnimationEvent를 매개로 받아서, 해당 Blend의 값(weight)가 0.5f일때만 오디오클립을 수행하도록 한다. 

 private void OnFootstep(AnimationEvent animationEvent)
        {
            if (animationEvent.animatorClipInfo.weight > 0.5f)
            {
                if (FootstepAudioClips.Length > 0)
                {
                    var index = Random.Range(0, FootstepAudioClips.Length);
                    AudioSource.PlayClipAtPoint(FootstepAudioClips[index], transform.TransformPoint(_controller.center), FootstepAudioVolume);
                }
            }
        }

 

 

위에서 animationEvent.animatorClipInfo.weight 의 메타데이터를 타고 들어가보면, 이는 해당 애니메이션 BlendTree의 가중치(임계점)에 대한 값을 뜻하고 있음을 알수있다. 

 


아래는 오디오소스를 수행하는것이며, 각 인자는 설명과 같고, _controller.center는 llocal 좌표로서, 이를 world 좌표로 바꾸어주는 transform.TransformPoint() 를 사용해주었다. AudioSource.PlayClipAtPoint는 월드좌표만을 받는다. 

728x90

'Unity' 카테고리의 다른 글

[해결] 개발상 막힌 부분 09/28 -0  (0) 2022.09.20
VisualScripting 컴포넌트 접근  (0) 2022.09.20
Unity - 비주얼스크립팅  (0) 2022.09.19
Voxel 미니게임 [ Squid Game ]  (0) 2022.09.16
[유니티] Animator-Apply Root Motion  (0) 2022.09.15