TIL: 유니티에서 B 버튼으로 발사 모드 변경

김보근·2025년 3월 13일

Unity

목록 보기
103/113
post-thumbnail

오늘 한 것

B 버튼을 누를 때마다 발사 모드(FireMode)를 Auto → Single → Burst 순서로 변경하는 기능을 구현했다.

문제

총기 발사 모드를 변경할 때, 모드가 순환하도록 만들고 싶었다.
즉, Auto → Single → Burst → 다시 Auto 형태로 돌아가야 했다.

해결 방법

Enum을 사용하고, 모드를 변경하는 로직을 한 줄로 처리했다.

1. FireMode 열거형(Enum) 정의

public enum FireMode { Auto, Single, Burst }

2. FireMode 모드변경 코드

currentMode = (FireMode)(((int)currentMode + 1) % System.Enum.GetValues(typeof(FireMode)).Length);

코드 분석

(int)currentMode → 현재 Enum을 숫자로 변환
Auto = 0, Single = 1, Burst = 2

  • 1 → 다음 모드로 이동
    % System.Enum.GetValues(typeof(FireMode)).Length
    모드 개수(3)로 나눈 나머지를 구해서 순환하도록 만듦

  • 2(현재 Burst) + 1 = 3 → 3 % 3 = 0 → Auto로 변경
    (FireMode) → 다시 Enum으로 변환

현재 currentMode //	(int)currentMode + 1 //	% 3 (모드 개수) //최종 currentMode
Auto (0)			0 + 1 = 1				1 % 3 = 1			Single
Single (1)			1 + 1 = 2				2 % 3 = 2			Burst
Burst (2)			2 + 1 = 3				3 % 3 = 0			Auto

배운 점

  • Enum을 사용할 때, System.Enum.GetValues(typeof(FireMode)).Length를 활용하면 개수를 동적으로 가져올 수 있다.
  • % 연산을 활용하면 리스트를 순환하는 구조를 쉽게 만들 수 있다.
  • Enum을 int로 변환하고 다시 Enum으로 캐스팅하면 가독성도 좋고 코드도 깔끔해진다.
profile
게임개발자꿈나무

0개의 댓글