반응형
코드 작성
using System.Collections;
using UnityEngine;
public class RhythmGame : MonoBehaviour
{
public AudioClip musicClip; // 게임 음악
public float beatInterval = 1.0f; // 음악의 비트 간격 (초 단위)
public KeyCode inputKey = KeyCode.Space; // 입력 받을 키
private AudioSource audioSource;
private float songTime; // 현재 음악 진행 시간
private bool canInput = true; // 입력을 받을 수 있는 상태인지 여부
void Start()
{
audioSource = GetComponent<AudioSource>();
audioSource.clip = musicClip;
// 음악 시작
StartCoroutine(PlayMusic());
}
void Update()
{
// 입력을 받을 수 있는 상태이고, 특정 키가 눌렸을 때
if (canInput && Input.GetKeyDown(inputKey))
{
// 입력에 대한 처리 (예: 노트 터치 처리)
Debug.Log("노트 터치!");
}
}
IEnumerator PlayMusic()
{
// 음악 시작
audioSource.Play();
// 음악이 끝날 때까지 반복
while (songTime < musicClip.length)
{
// 음악 진행 시간 업데이트
songTime += Time.deltaTime;
// 리듬에 따른 처리 (예: 노트 생성)
// 입력을 받을 수 있는 상태로 전환
canInput = true;
// 비트 간격만큼 대기
yield return new WaitForSeconds(beatInterval);
// 입력을 받을 수 없는 상태로 전환
canInput = false;
}
// 음악 종료 후 게임 오버 또는 결과 처리 등을 추가할 수 있습니다.
}
}
반응형