본문 바로가기
Tech Review : Unity & C#

4. Argon Assault : Unity's New Input System ~ Set Up Firing Input

by dalgoxx 2023. 11. 10.

Udemy 강좌 'Complete C# Unity Game Developer 3D' 리뷰 및 기술 기록지입니다. 

Project Boost : 75. Unity's New Input System ~ 84. Set Up Firing Input

 

 

[75. Unity's New Input System]

 

new Input System을 적용하여 키보드 입력을 불러온다.

 

movement 생성 후
유니티에서 키보드 입력 설정

 

*설정을 추가하여 여러가지 입력을 받아올 수 있다. (게임패드 + 다른 키보드 등)

 

OnEnable() : 활성화가 될 때 한번 실행된다.

OnDisable() : 비활성화가 될 때 한번 실행된다.

 

 

[76. Start Moving Our Player]

 

X축에 집중하여, 화면의 오른쪽에 치우치게 위치 변환

position : 월드 포지션(0, 0, 0)을 기준으로 잡힌 좌표

localPosition : 부모의 position을 기준으로 잡은 좌표

* 부모가 없을 경우 월드를 기준으로 좌표를 삼는다.

 

현재 위치 + xOffset 으로 오브젝트가 천천히 오른쪽으로 움직이도록 수정한다.

 

오른쪽으로 오브젝트가 이동함

 

 

[77. Move Player Using Input]

 

Player의 움직임 속도를 조절한다.

같은 방식을 따라 y축의 움직임도 조정한다.

 

 

 

[78. Mathf.Clamp() To Constrain Movement]

 

Mathf.Clamp() : 주어진 최소 부동 소수점 값과 최대 부동 소수점 값 사이에서 지정된 값을 고정. 최소 및 최대 범위 내에 있는 경우 지정된 값을 반환한다.

 

 

따라서 x축으로 움직일 수 있는 범위를 -5f ~ 5f로 제한할 수 있다.

 

 

같은 방식으로 y축도 범위를 제한하여 화면 안에서만 Player가 움직일 수 있게 한다.

 

 

[79. How To Set Local Rotation]

 

Player(로켓)의 각도를 조절한다.

ProcessTranslation()으로 움직이는 코드를 묶음.

ProcessRotation() 역시 각도를 조절하는 코드를 묶음

 

각도를 조절하기 위해 localRotation을 사용한다. (움직임은 localPosition을 사용했음)

 

기울어진 채 날고 있는 로켓

 

 

[80. Rotate Ship With Position & Throw]

 

중앙을 기준으로 오른쪽 이동 시, 왼쪽으로 로켓이 향하고, 왼쪽 이동 시, 오른쪽으로 로켓이 향하게 함.

 

상, 하, 좌, 우로 이동 시에 각도를 조절시키는  ProcessRotation 함수

 

 

[81. Time To Tune And Tweak]

 

전체적인 세부 요인을 Fix하는 과정 (카메라 초점, 오브젝트 이동 길이, 각도 조절 등)

애니메이션 길이(로켓 이동 시간) 30초 이상으로 늘린다.

 

 

[82. Particle System Laser Bullet]

 

 

Player 오브젝트에 Particle System Component를 추가한다.

Resources에서 Particle Materials.zip을 다운로드하여 적용한다.

적용 후 모습

 

rate over time / start speed / start life time 속성을 변경해서 원하는 형태의 laser을 완성한다.

trails 옵션을 통해 laser의 모양을 만들어 준다.

laser shape

 

[83. Exploring Nested Prefabs In Unity]

 

Nested Prefabs에 대한 실험 단계

 

Nested Prefabs : 다른 프리팹 내에 프리팹 인스턴스를 포함한다. 고유한 프리팹 에셋 링크를 보유하며 다른 프리팹 에셋의 일부를 형성한다.

*Overrides 드롭다운 버튼은 바깥쪽 Prefabs에만 표시.

*Prefabs 인스턴스가 추가되면 Hierarchy 창의 아이콘 위에 더하기 배지가 오버레이되어 바깥쪽 프리팹의 특정 인스턴스에 대한 오버라이드임을 나타낸다

*바깥쪽(부모) 프리팹의 크기를 바꾸면 속해 있는 프리팹의 크기도 같이 변한다. 하지만 속한 프리팹의 크기를 바꾸면 해당 오브젝트의 크기만 변화한다.

 

[84. Set Up Firing Input]

 

ProcessFiring() 함수를 구성하는 과정새 입력 시스템을 사용하여 플레이어가 fire button을 누를 때 결과창에 기록한다.

new input system을 사용하는 경우