์ผ๋‹จ ๊ฐ„๋‹จํ•˜๊ฒŒ๋‚˜๋งˆ ๋‘๋”์ง€๊ฐ€ ๊ฐ๊ฐ ์˜ฌ๋ผ๊ฐ€๋Š”์ค‘, ์˜ฌ๋ผ์™€์žˆ๋Š” ์ƒํƒœ, ๋‚ด๋ ค๊ฐ€๋Š” ์ค‘ ์š”๊ฑฐ 3๊ฐœ๋งŒ ์ผ๋‹จ ํ•ด๋ณด๊ณ  ์ถ”๊ฐ€ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋Š”๋ฐ


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SoundManager : MonoBehaviour
{
ย  ย  public AudioSource[] DdgSFX; ย  ย // ์˜ค๋””์˜ค์†Œ์Šค
ย  ย  public AudioClip[] DdgClip; ย  ย  // ์˜ค๋””์˜คํด๋ฆฝ
ย  ย  public enum Ddg { MoveUp, MoveDown, OnGround, PlusScore }; ย // ๊ฐ ์ƒํƒœ์˜ ์—ด๊ฑฐํ˜•
ย  ย  int cursor; ย  ย  // ๋ช‡ ๋ฒˆ์งธ ์žˆ๋Š”์ง€์— ๋”ฐ๋ฅธ ์ธ๋ฑ์Šค๊ฐ’

ย  ย  public void DdgPlaySound(Ddg type)
ย  ย  {
ย  ย  ย  ย  switch(type)
ย  ย  ย  ย  {
ย  ย  ย  ย  ย  ย  case Ddg.MoveUp:
ย  ย  ย  ย  ย  ย  ย  ย  DdgSFX[cursor].clip = DdgClip[0];
ย  ย  ย  ย  ย  ย  ย  ย  break;
ย  ย  ย  ย  ย  ย  case Ddg.MoveDown:
ย  ย  ย  ย  ย  ย  ย  ย  DdgSFX[cursor].clip = DdgClip[1];
ย  ย  ย  ย  ย  ย  ย  ย  break;
ย  ย  ย  ย  ย  ย  case Ddg.OnGround:
ย  ย  ย  ย  ย  ย  ย  ย  DdgSFX[cursor].clip = DdgClip[2];
ย  ย  ย  ย  ย  ย  ย  ย  break;
ย  ย  ย  ย  ย  ย  case Ddg.PlusScore:
ย  ย  ย  ย  ย  ย  ย  ย  DdgSFX[cursor].clip = DdgClip[3];
ย  ย  ย  ย  ย  ย  ย  ย  break;
ย  ย  ย  ย  }
ย  ย  ย  ย  DdgSFX[cursor].Play();
ย  ย  ย  ย  cursor = (cursor + 1) % DdgSFX.Length;
ย  ย  }
}


์‚ฌ์šด๋“œ ๊ด€๋ จํ•ด์„œ๋Š” ๊ทธ๋ƒฅ ์œ ํŠœ๋ธŒ ๋”ฐ๋ผ ์ผ๊ณ , ์œ ํŠœ๋ธŒ ๋”ฐ๋ผ ์จ์„œย cursor = (cursor + 1) % DdgSFX.Length;ย ์ด๊ฑฐ ์™œ ํ•˜๋Š”์ง€ ์•„์ง ์ดํ•ด ๋ชปํ•จ..


๊ทธ๋ž˜์„œ ์ด๊ฑธ ๋‘๋”์ง€ ๊ด€๋ฆฌํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์— ๋„ฃ์—ˆ๋”๋‹ˆ


using System.Collections;
using UnityEngine;

public class Spawn : MonoBehaviour
{

ย  ย  [SerializeField]
ย  ย  private MoleSFM[] moles;

ย  ย  public SoundManager sm;

ย  ย  private void Awake()
ย  ย  {
ย  ย  ย  ย  sm = GetComponent<SoundManager>();
ย  ย  }

ย  ย  private void Update() {

ย  ย  ย  ย  // 0๋ฒˆ ์œ„์ชฝ ๋•ƒ์ฅ์— ๋Œ€ํ•œ ์ฝ”๋“œ
ย  ย  ย  ย  if (Input.GetKey(KeyCode.UpArrow)) {
ย  ย  ย  ย  ย  ย  moles[0].ChangeState(MoleState.MoveUp);
ย  ย  ย  ย  ย  ย  sm.DdgPlaySound(SoundManager.Ddg.MoveUp);
ย  ย  ย  ย  ย  ย  // ์˜ฌ๋ผ์˜จ ๋™์•ˆ ์ ์ˆ˜๊ณ„์‚ฐ
ย  ย  ย  ย  ย  ย  if (moles[0].MoleState == MoleState.OnGround) {
ย  ย  ย  ย  ย  ย  ย  ย  sm.DdgPlaySound(SoundManager.Ddg.MoveUp);
ย  ย  ย  ย  ย  ย  ย  ย  ScoreResult.plusScore(true);
ย  ย  ย  ย  ย  ย  }
ย  ย  ย  ย  // 1๋ฒˆ ๋•ƒ์ฅ์— ๋Œ€ํ•œ ์ฝ”๋“œ
ย  ย  ย  ย  } else if (Input.GetKey(KeyCode.DownArrow)) {
ย  ย  ย  ย  ย  ย  moles[1].ChangeState(MoleState.MoveUp);
ย  ย  ย  ย  ย  ย  sm.DdgPlaySound(SoundManager.Ddg.MoveUp);
ย  ย  ย  ย  ย  ย  // ์˜ฌ๋ผ์˜จ ๋™์•ˆ ์ ์ˆ˜๊ณ„์‚ฐ
ย  ย  ย  ย  ย  ย  if (moles[1].MoleState == MoleState.OnGround) {
ย  ย  ย  ย  ย  ย  ย  ย  sm.DdgPlaySound(SoundManager.Ddg.OnGround);
ย  ย  ย  ย  ย  ย  ย  ย  ScoreResult.plusScore(true);
ย  ย  ย  ย  ย  ย  }


์ด๋ ‡๊ฒŒ ๊ทธ ๋ฐ‘์œผ๋กœ ๊ณ„์† ๋ฐ˜๋ณต์ฝ”๋“œ๊ฐ€ ์žˆ๋Š”๋ฐ ๋ฌธ์ œ๋Š” ์ด๋ ‡๊ฒŒ ํ•˜๊ณ  ์‹คํ–‰์„ ์‹œํ‚ค๋‹ˆ๊นŒ



78ebc53ff1d721a266b5d1a617d522697232d7140abccea9a2ce561d69b5f36ef90529


๋„๊ฐ’์ด๋ผ๊ณ  ๋œฌ๋‹ค


๋งˆ์Œ ๊บพ์ผ ๊ฑฐ ๊ฐ™๋‹ค.. ์ด๊ฑฐ ์™œ ์ด๋Ÿฌ๋Š”๊ฑฐ์•ผ...