[내일배움캠프 본 캠프 78일차] SFX

2026. 1. 19. 22:54본 캠프

게임 플레이에서 사운드적 요소를 통한 플레이피드백을 주기 위해 SFX를 넣고 있는 중인데

생각보다 단순히 들고 내려놓는 사운드의 처리도 복잡하다는 걸 깨닫는 하루였다.

 

 

먼저 준비물은 SFX를 SO형태로 보관해서 관리하기 위해서 만들었는데, 이렇게 할 바에 차라리 오브젝트별 SO데이터를 만들고

SO를 통합해놓은 통합SO 테이블을 따로 만드는 게 나았나 싶기도 하다.

먼저 SFX를 담고있는 SO는 이런 구성으로 되어있는데, 상호작용 SFX를 위처럼 분리한 이유는

단순히 '들기' 만 구현하는 형태고 내려놓는 것도 단순히 내려놓는 행동이였으면 사운드 처리가 복잡하진 않았겠지만

우리 프로젝트의 내려놓기는 일종의 '던지기' 형식이기 때문에 던졌을 때 사운드가 나와선 안되고

해당 오브젝트가 특정 콜라이더에 부딪혔을 때 사운드가 나와야 올바른 피드백이기 때문이다.

 

그렇기 때문에 들고 있을 때 내려놓는 SFX 오브젝트가 소리의 출력을 판단해야한다.

 

 

그래서 오브젝트가 SO를 들고다니면서 자신이 해당하는 타입의 소리를 낼 준비를 하고

 

Ground라는 레이어에 OnCollisionEnter 메서드를 통해서 닿았을 때 CanDrop의 사운드를 출력하도록 만들었다.

 

SFX작업도 마찬가지로 하면 할수록 좀 더 깔끔하고 관리하기 편하게 만들 수 있을 거 같은데

뭔가 우겨넣듯이 작업을 하는 거 같아서 아쉬움이 많이 든다.

 

특히 들고/내려놓기 나 다른 상세보기에서 사운드 출력 등 다양한 상황에서 SFX를 관리하면서 출력하는 타이밍을 조절하는 부분은

어떻게 해야 좋을지 추후에 자세히 찾아봐야겠다.

SO 형태로 구성해서 들고 다니는 것 까지는 괜찮다고 생각하지만, 콜라이더 판정이나 막상 소리의 길이나 타이밍이 맞지 않는 부분은 단순히 IEnumerator 등의 지연시간을 통해서 사용하기엔 아닌 거 같고

SFX 출력 지연시간이나 타이밍을 맞출 수 있도록 별도의 GUILayout 형식의 사운드 바를 둬서 기획자 입장에서도 쉽게 타이밍을 조절할 수 있도록 만드는 코드 구성을 해놓으면 어떨까 라는 고민이 든다.