일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- MAC
- linear difference equation
- dtft
- pdlc
- AINCAA
- MLFQ
- 게임개발
- 배경 그림
- dirty cow
- polymorphism
- DP
- 게임 개발
- SNR
- link layer
- 유스케이스
- stride
- Security
- STCF
- 유니티
- DSP
- 운영체제
- frequency-domain spectrum analysis
- information hiding
- Frequency Response
- 메카님
- Unity #Indie Game
- convolution
- ret2libc
- sampling theory
- Race condition
Archives
- Today
- Total
다양한 기록
Parrying Sword #53 : [사운드][프로그래밍] bgm과 효과음 본문
저번 게시글에서는 직접 작곡을 해서 bgm을 넣으려고 했던 것 같은데,
하다 보니 도저히 안될 것 같아서 결국 유니티 에셋 스토어에서 받아서 쓰기로 했습니다.
https://assetstore.unity.com/ko
사용한 에셋들은 다음과 같습니다.
NOVA SOUND : Free Fireworks - Fire FX - Nova Sound
MGWSOUNDDESIGN : Grenade Sound FX
GWRITERSTUDIO : Monster SFX - 111518
INSPECTORJ SOUND EFFECTS : Wooden Fence Destruction (Free Sample Pack)
EDOARDO GIGANTE : Sword Sound Pack
ESCALONAMUSIC.COM : Action RPG Music Free
public void onBurstSound()
{
burstSoundController.playClip();
}
public void onBreathSound()
{
breathSoundController.playClipWithStartTime(0.2f);
}
public void onRoarSound()
{
roarSoundController.playClipWithStartTime(0.1f);
}
public void onNormalSound()
{
normalSoundController.playClipWithStartTime(0.2f);
}
public void onCompletionSound()
{
completionSoundController.playClip();
}
받은 에셋들의 경우, 효과음은 이런 식으로 오디오 각 객체들의 행동에 연결해 둡니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FadeSound : MonoBehaviour
{
// BGM에 붙여서 사용
private float minV = 0.0f;
private float maxV;
private float speed;
private AudioSource audioSource;
public FadeState fadeState = FadeState.FADEIN;
private void Awake()
{
maxV = SaveData.SoundBGMVolume;
speed = (maxV - minV) / 300.0f;
audioSource = GetComponent<AudioSource>();
}
private void Start()
{
if( fadeState == FadeState.NON )
{
audioSource.volume = SaveData.SoundBGMVolume;
}
else if( fadeState == FadeState.FADEIN )
{
audioSource.volume = 0.0f;
}
}
private void Update()
{
if (!audioSource.isPlaying) return;
//Debug.Log(audioSource.volume);
switch (fadeState)
{
case FadeState.FADEIN:
audioSource.volume += speed;
if (audioSource.volume > maxV )
{
audioSource.volume = maxV;
fadeState = FadeState.NON;
}
break;
case FadeState.FADEOUT:
audioSource.volume -= speed;
if( audioSource.volume < minV )
{
audioSource.volume = minV;
fadeState = FadeState.NON;
}
break;
}
}
public void fadeIn()
{
fadeState = FadeState.FADEIN;
}
public void fadeOut()
{
fadeState = FadeState.FADEOUT;
}
}
bgm의 경우 페이드인, 페이드아웃 처리를 해줍니다.
public override void buttonLeft()
{
if (now == 0)
{
soundBGMVolume -= 1;
if (soundBGMVolume < 0.0f) soundBGMVolume = 0;
SaveData.SoundBGMVolume = ((float)soundBGMVolume / 10);
bgmText.text = soundBGMVolume.ToString();
soundBGMController.updateVolume();
}
else if (now == 1)
{
soundSEVolume -= 1;
if (soundSEVolume < 0) soundSEVolume = 0;
SaveData.SoundSEVolume = ((float)soundSEVolume / 10);
seText.text = soundSEVolume.ToString();
soundSEController.updateVolume();
soundSEController.playClip();
}
}
이 코드는 메인 메뉴의 옵션에 해당하는 코드의 일부입니다.
옵저버 패턴 비슷하게 응용해서, 옵션에서 볼륨을 바꾸면 등록된 개체의 데이터를 업데이트 시키는 방식입니다.
public void updateVolume()
{
if (isBGM)
{
audioSource.volume = SaveData.SoundBGMVolume;
}
else
{
audioSource.volume = SaveData.SoundSEVolume;
}
//Debug.Log(audioSource.volume);
}
이게 등록된 개체의 업데이트 메소드입니다.
bgm이나 효과음이 어떻게 적용되었는지 영상을 찍어오고 싶기는 한데,
맥북은 컴퓨터 내의 소리 녹음이 따로 방법을 쓰지 않고 기본으로는 불가능한 관계로 올리지 못하여 아쉽습니다.
'유니티 엔진 > Parrying Sowrd' 카테고리의 다른 글
Parrying Sword #55 : 게임 완성 및 후기 (0) | 2024.02.02 |
---|---|
Parrying Sword #54 : [개발] 해상도 설정 (0) | 2024.01.31 |
Parrying Sword #52 : [개발] 메인 메뉴 및 데이터 저장 시스템 (0) | 2024.01.16 |
Parrying Sword #51 : [아트] Parrying Sword 타이틀 로고 (0) | 2024.01.16 |
Parring Sword #50 : [프로그래밍] 메뉴와 상호작용 (0) | 2024.01.12 |