반응형
충돌시 효과음 플레이하기
충돌을 할때랑 트리거 충돌을 할때랑 모두 연결하고싶은데 메서드를 똑같은거 두개를 하기에는 너무 깔끔하지 못해보이길래 수정했다.
일단 점프패드는 점프 사운드를 출력하고 파이프는 텔레포터사운드를 출력한다. 둘다 모두 Player 태그를 가진 오브젝트와 충돌했을때 실행된다.
>> 충돌이 될 오브젝트
- 충돌이 생겼을때 실행될 코드
SoundCollisionPlay.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SoundCollisionPlay : MonoBehaviour
{
private AudioSource audioSource;
public AudioClip audio;
private void Start()
{
audioSource = GetComponent<AudioSource>();
if (audioSource == null)
{
audioSource = gameObject.AddComponent<AudioSource>();
}
audioSource.clip = audio;
}
private void OnCollisionEnter(Collision collision)
{
CollisionOrTrigger(collision.gameObject);
}
private void OnTriggerEnter(Collider other)
{
CollisionOrTrigger(other.gameObject);
}
private void CollisionOrTrigger(GameObject obj)
{
if (obj.CompareTag("Player"))
{
if (audioSource != null)
{
audioSource.Play();
}
else
{
Debug.LogError("AudioSource component is missing.");
}
}
}
}
- 볼륨을 조절할 코드
SetSoundController.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
using UnityEngine.UI;
public class SetSoundController : MonoBehaviour
{
[SerializeField] private AudioMixer audioMixer;
public Slider bgmSlider;
public Slider sfxSlider;
private const string BGMVolumeKey = "BGMVolume";
private const string SFXVolumeKey = "SFXVolume";
private void Start()
{
float savedBGMVolume = PlayerPrefs.GetFloat(BGMVolumeKey, 1f);
bgmSlider.value = savedBGMVolume;
SetBGMVolume(savedBGMVolume);
float savedSFXVolume = PlayerPrefs.GetFloat(SFXVolumeKey, 1f);
sfxSlider.value = savedSFXVolume;
SetEffectVolume(savedSFXVolume);
// 이벤트 리스너 추가
bgmSlider.onValueChanged.AddListener(SetBGMVolume);
sfxSlider.onValueChanged.AddListener(SetEffectVolume);
}
public void SetBGMVolume(float volume)
{
audioMixer.SetFloat("BGM", Mathf.Log10(volume) * 20);
PlayerPrefs.SetFloat(BGMVolumeKey, volume);
}
public void SetEffectVolume(float volume)
{
audioMixer.SetFloat("SFX", Mathf.Log10(volume) * 20);
PlayerPrefs.SetFloat(SFXVolumeKey, volume);
}
}
.
볼륨을 조절하는 코드와 오디오 믹서를 올린 이유는
오디오소스에 Output이 SFX로 되어있어서 궁금해하는 사람들이 있을까하고 올려본다.
현재 오디오 믹서 그룹의 BGM은 배경음악, SFX는 효과음을 담당하고 있다.
여러개의 음량을 조절하고 싶은 사람들은 참고하기!!
오늘의 회고
너무 바빠서 하루종일 의자에 앉아서 했는데 해결 못했었다.
근데 자고 일어나니 1초만에 해결했다. 아주. 기분이. 애매했다.
되게 완성도 높게 만들려고 잠도 반납하면서 했는데 나만 그렇게 하는게 아니라 팀원들도 최선을 다해서 해주는게 눈에 보여서 나도 열심히 하게되는 것 같다,
반응형
'Record > TIL' 카테고리의 다른 글
[Unity] 토글 클릭해서 배경음악 변경하기 (0) | 2024.06.12 |
---|---|
[Unity] 3D 러너게임 팀프로젝트 마무리 (Ps.일주일치고는 완벽..!) (2) | 2024.06.11 |
[Unity] Linked List, Stack, Queue (2) | 2024.06.07 |
[Unity] UI 위에 오브젝트 표시되게 하기 (0) | 2024.06.05 |
[Unity] 3D 맵 제작 (2D 타일맵을 이용하여 제작하기) (7) | 2024.06.04 |