TIL

2025 01 08 TIL

noc777 2025. 1. 8. 21:10

기존에 퍼즐을 시작하는 지점을 태그로 작동시켰는데 레이어마스크 변수를 두고 

레이어마스크에 해당하는 객체가 통과할 때로 변경하였다.

이유는 객체를 판별하는 트리거나 레이 등이 대부분 레이어를 통한 판별로 이루어지기에 통일성을 위함이다.

 

과정에서 조건문에 

if(other.gameobject.layer == layermask)

와 같이 조건을 썻는데 작동하지 않아 살펴보았다.

 

이전 과정에서 레이를 사용하는 것을 처음 배웠을 때 레이어마스크를 활용하였다는 것이 기억나서 다시 살펴보니 

적절하게 사용하고 있지 않았다는 것을 알았다.

 

현재 Player 라는 레이어는 3인 인덱스를 사용하고있는데 LayerMask 변수는 레이어를 비트연산자로 1<< 만큼 수정한 것이기에 3 == 8 인 항상 false인 조건문을 작성하려는 것이었고 layermask 는 문자열인 레이어 이름을 나타내기에 부적절하였다.

 

if(1<<other.gameobject.layer == layermask.value)

따라서 트리거로 검출된 layer에 1<< 만큼 계산을 해주고 layermask.value를 통해 비트 마스크를 비교하니 해결되었다.

 

이진수를 제대로 사용한 것이 얼마되지 않아서 제대로 모르고 당시에

판별법에 레이어마스크라는 방법이 있구나라는 식으로 넘어갔는데

일단 레이어에 쓰이는 것은 인덱스의 1<< 만큼 계산한 것이라 이해하였다.

좀 더 정확하게 알고싶으나 유저테스트 이전에 신경써야할 부분이 많아 일단 넘어간다.

 

퍼즐 공용으로 쓰일 퍼즐 성공, 퍼즐 실패 임시 효과음을 넣었는데 

일반적인 퍼즐 효과음으로는 적합하지만 공포게임으로서의 분위기가 나지 않아 고민중이다.  

 

또한 넣고보니 공용으로 사용되는 오디오소스 볼륨만으론 혼자 작게 들리는 문제가 있어

오디오 믹서라는 기능을 살펴봐야할 것 같다..  

 

오디오 믹서의 기능을 살펴보니 사운드매니저에서 변수로 제어하고 있던 각 오디오 클립 분류 별 볼륨 조절 기능이 있는 듯하다.  

private List<AudioSource> sfxSources = new List<AudioSource>(); //효과음들을 제어하기 위한 리스트

private Dictionary<string, AudioClip> soundPool = new Dictionary<string, AudioClip>();

[Header("Volume")]
[SerializeField][Range(0f, 1f)] private float bgmVolume;
[SerializeField][Range(0f, 1f)] private float sfxVolume;

 

현재 위 처럼 float 값으로 변수를 조절하고 있는데 이것이 효과음들은 각 오브젝트에 있는 오디오 소스를 받아와서 전체적인 효과음들을 제어하는 방식으로 활용하다보니 세부적인 효과음 제어를 못하고있는데 어쩌면 이것을 가능하게 만들 수 있을것으로보인다. 

 

좀 더 찾아보고 나서 이어서 정리하려한다.

'TIL' 카테고리의 다른 글

2025 01 10 TIL  (0) 2025.01.10
2025 01 09 TIL  (0) 2025.01.09
2025 01 07 TIL  (0) 2025.01.07
2025 01 06 TIL  (0) 2025.01.06
2025 01 02 TIL  (0) 2025.01.02