내일배움캠프 31일차

박나연·2025년 5월 21일

내배캠

목록 보기
31/69

유니티 숙련주차 강의 듣기 끝

오늘의 키워드 : 젠장, 또 전통모델링이야. 난 써야만 해

오늘은 강의를 다 듣고 개인 과제를 시작했다. 강의에서 주어진 에셋을 쓰고 싶지 않아서 무료 에셋을 찾아보았다. 난 옛날부터 전통 가옥이나 그런 오브젝트, 분위기를 정말 좋아했는데(오죽하면 졸업과제도 한국풍 공포게임) 그때 못 구했던 에셋들이 잔뜩 있는것이다!!! 발견한 이상 안쓸 수 없어서 이것저것 가져와버렸다. 이번 개인과제로 기획한 건 1인칭 한국풍 테런(슈퍼점프 맵)이고, 정말 작은 프로젝트라 용량이 큰 에셋은 가져오지 않았다. 사실 스크립트 쓰고 기능 구현을 더 열심히 해야하지만 한국풍 비주얼.. 참을 수 없다!! 그래도 가져온 덕에 이번 과제 즐겁게 작업할 수 있을 것 같아서 신난다. 오늘 TIL에는 강의에서 배웠던 오디오 페이드 아웃에 대해 짧게 소개하고 넘어가려 한다(크게 쓸 내용이 없었다는건 비밀이다)

Audio Fade Zone

플레이어가 특정 구역에 들어가면 오디오 볼륨을 서서히 올리고, 벗어나면 서서히 내리는 기능 구현

  • 빈 오브젝트에 콜라이더 추가
  • 콜라이더 영역 적절히 설정
public class MusicZone : MonoBehaviour
{
    public AudioSource audioSource;
    public float fadeTime;
    public float maxVolume;
    private float targetVolume;

    private void Start()
    {
        targetVolume = 0.0f;
        audioSource = GetComponent<AudioSource>();
        audioSource.volume = targetVolume;
        audioSource.Play();

    }

    private void Update()
    {
        if (!Mathf.Approximately(audioSource.volume, targetVolume))
        {
            audioSource.volume = Mathf.MoveTowards(audioSource.volume, targetVolume, (maxVolume / fadeTime) * Time.deltaTime);
        }
    }

    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            targetVolume = maxVolume;
        }
    }

    private void OnTriggerExit(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            targetVolume = 0.0f;
        }
    }
}
  • Mathf.Approximately(x,y)는 x와y가 거의 같은지를 판정해주는 메서드이다.
  • Mathf.MoveTowards(current, target, maxDelta)current에서 target쪽으로 maxDelta만큼 이동시켜 준다. 만약 두 값 차이가 maxDelta보다 작으면 target을 리턴한다. 이걸 매 프레임마다 호출하면 선형보간(lerp)과 비슷한 효과를 얻을 수 있다.

fadeTime초 동안 0에서 maxVolume, 또는 maxVolume에서 0으로 일정속도로 바뀌고, Mathf.Approximately로 목표에 도달했으면 계산하지 않아 볼륨이 깜빡거리거나 초과없이 깔끔하게 멈추게 된다.

마무리하며

오전에 강의 허겁지겁 듣고 개인 과제를 위해 간단하게 기획을 짜고 구현을 시작했다. 에셋 다운 받느라 좀 늦게 시작하긴 했지만 난 맨날 필수과제만 하는 주의니까 이번에도 필수 과제만 구현을 목표로 하려한다. 그래서 좀 여유부리는 걸지도??

내일 할 일

금요일에 개인과제 마감이므로 목요일인 내일 꼭 마감해야 한다. 금요일에는 맵 꾸미기나 자잘한 기능 추가 정도를 넣는 정도로만 작업을 남겨둬야 하니까 내일 빡세게 작업하기!

0개의 댓글