TIL.32 - Sound

김진영·2024년 6월 7일

스파르타코딩

목록 보기
33/39
post-thumbnail

자동 저장 기능이 혼자하기에는 많이 어려워서 다른 팀원분들께 도움을 요청하였다. 거기다가 원래 목요일날 올라오기로 했던 json강의가 조금 미뤄져서 내가 혼자 담당하기에는 무리가 있다고 판단하고 마지막에 다같이 하기로 결정하였다.

그래서 그 전까지 맡은 부분이 게임에선 빠질 수 없고, 게임의 긴장감을 더 고조시킬 그런 장치. 사운드부분을 맡게 되었다.

1. 문제의 발단


그러다가 문제가 하나 발생하게 되었는데, 플레이어가 걸어가는 발걸음 소리를 만들다가 발생하게 되었다.

우선 걸을 때마다 소리가 들릴 수 있도록 할 수 있는 코드를 한번 보자

public class FootStepsSound : MonoBehaviour
{
    public AudioClip[] footstepClips;
    private AudioSource audioSource;
    private Rigidbody _rigidbody;
    public float footstepThreshold;
    public float footstepRate;
    private float footstepTime;

    private void Awake()
    {
        _rigidbody = GetComponent<Rigidbody>();
        audioSource = GetComponent<AudioSource>();
    }
    private void Update()
    {
        if(Mathf.Abs(_rigidbody.velocity.y) < 0.1f)
        {
            if(_rigidbody.velocity.magnitude > footstepThreshold)
            {
                if(Time.time - footstepTime > footstepRate)
                {
                    footstepTime = Time.time;
                    audioSource.PlayOneShot(footstepClips[Random.Range(0, footstepClips.Length)]);
                }                
            }
        }
    }
}

플레이어가 바닥에 있을 때만 소리가 나게 했고, 여러가지 발자국소리가 랜덤으로 나올 수 있게 audioclip 배열과 random을 활용해서 나오게 되었다.

이렇게 만들었고 적용까지했는데 여기서 문제가 발생했다. 발자국 소리가 들리지 않는 것이었다.

2. 해결 방법


왜 발자국 소리가 안나는지 코드도 하나하나 다시 봤었고 문제가 없음을 확인하였다. 그래서 도무지 이게 왜 발자국 소리가 안날까 싶었는데, 생각도 안했고, 필요없을거라고 생각했던 것을 빼먹어서 소리가 안나는 것이었다. 그것은 바로 Audio Source.
오디오 소스를 빼먹은 것이다. 나는 사실 스크립트 짜면서 오디오클립 배열안에 소리파일들을 다 넣어놔서 당연히 소리가 날 줄 알았는데 그게 아니었다.

원래 오디오 소스를 사용하게 되면 저기 젤 위에있는 AudioClip None이라고 되어있는 곳에 소리파일을 집어넣으면 소리가 나게 되는데, 나는 스크립트 오디오클립 배열안에 소리 파일들을 넣어놔서 없어도 될거라고 생각했던 것이다. 그래서 혹시나 오디오소스에 아무파일도, 아무 설정도 안건드리고 다시 시도해보았다.

놀랍게도 바로 소리가 나는 것이었다. 이렇게 오류를 해결하였다.

한가지 알아낸 것은 소리가 들어가야하는 곳에는 무조건 AudioSource를 넣어야한다는 것이다.

3. 회고


금요일이 이렇게 갔다. 오늘은 먼가 하루종일 특강 듣느라 다들 구현은 많이 못한 것처럼 보였다. 다음주 화요일이 제출에 발표이고 월요일에는 발표 정리와 마무리작업을 해야하기 때문에 사실상 시간은 월요일 오전까지이다. 그래서 팀원 다 같이 주말에 나와서 작업을 같이 하기로 하였다. 오디오 작업도 사실 거의 다 끝내놓아서 만들어둔 스크립트, 메서드를 재활용해서 차단기 내릴때, 자물쇠 부실때 등등 어울리는 사운드 에셋만 찾아서 넣으면 된다. 거기에 플레이어가 달릴 때 발소리 사운드를 좀 더 빠르게 들릴 수 있도록 만들면 어느정도 완성은 될 것 같고, 다 같이 남은 기능들 마무리하면 될 것 같다.

0개의 댓글