유니티 엔진 - 게임 프로젝트/Photon을 사용한 멀티 플레이어 게임

게임플레이 - 1) 사격 FX 효과 추가

monstro 2026. 4. 28. 15:47
728x90
반응형

- 개요

플레이어가 마우스 왼쪽 키를 누르면 총을 발사하고 FX 효과를 발생시키도록 설계한다

 

- 애셋 작업

1) InputActions 애셋

 

총을 발사하면 발동하는 Fire 액션을 추가한다

해당 액션은 마우스 왼쪽 키를 누르면 동작한다

 

2) 사격 VFX 머티리얼 애셋

 

위와 같이 설정한 URP - Simple Lit 머티리얼 애셋을 생성한다

해당 머티리얼은 Quad 오브젝트에 적용하여 시각 효과를 연출한다

 

- 스크립트 작업

1) DisplayColor 클래스

 

총을 사격하면 발생하는 소리 효과를 저장할 멤버변수를 추가한다

 

 

PlayGunShot 함수를 호출하여 소리 효과를 재생한다

내부적으로 방에 있는 다른 모든 플레이어로부터 PlaySound 함수를 호출하도록 설정한다

PlaySound 함수의 로직은 위와 같이 구성하여 다른 플레이어들이 사격 소리를 들을 수 있도록 설정한다

 

2) PlayerFire 클래스

 

Fire 액션에 바인드되어 키가 입력되면 동작하는 PlayerFire 클래스를 생성한다

멤버변수의 구성은 위와 같다

  • muzzleFlash 멤버변수 : 사격과 관련된 시각효과를 저장하는 멤버변수
  • _photonView 멤버변수 : 플레이어에 수식된 PhotonView 컴포넌트
  • DisplayColor 멤버변수 : 사격과 관련된 소리효과를 재생할 컴포넌트
  • _currentWeaponNumber 멤버변수 : 현재 사용중인 무기의 번호

 

 

Awake 함수를 위와 같이 정의하여 필요한 멤버변수의 값을 설정한다

 

 

사격후에 발생하는 시각효과를 연출하는 과정은 위와 같다

  • HandleFire 함수를 호출 : 사격과 관련된 시각효과를 연출
    • 내부적으로 로컬 클라이언트인지 확인
    • 다른 플레이어들로부터 FireRPC 함수를 호출하도록 설정
    • DisplayColor 컴포넌트의 PlayGunShot 함수를 호출하여 사격과 관련된 소리 효과 재생
  • FireRPC 함수 : 현재 사용중인 무기의 번호를 갱신 + CoMuzzleFlash 코루틴 함수 호출
  • CoMuzzleFlash 함수 : 0.03초 동안 시각효과를 연출 

 

3) InputReader 클래스

 

Fire 액션과 관련된 멤버변수를 추가하고

교체한 무기의 번호를 PlayerFire 클래스에 전달하기 위한 멤버변수를 추가한다

 

 

Awake 함수 - OnEnable 함수 - OnDisable 함수에 로직을 추가하여 Fire 액션의 동작에 필요한 작업을 진행한다

 

 

Swap 함수에 로직을 추가하여 무기를 변경하기 위한 키의 Factor 값을 사용하여 추가한 멤버변수를 갱신한다

 

 

Fire 함수는 위와 같이 구성하여 Fire 액션에 연결된 콜백함수를 호출한다

 

4) PlayerController 클래스

 

Fire 액션과 관련된 멤버변수를 추가하고 Awake 함수에서 설정한다

 

 

OnEnable 함수와 OnDisable 함수에서 Fire 액션의 동작에 필요한 작업을 진행한다

 

- 최종 실행 결과

728x90
반응형