본문 바로가기
개발/C#

유니티 C# 리듬게임 만들기 Rhythm Game 예시 간단 구현

by SPNK 2024. 2. 29.
반응형

코드 작성

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;
        }

        // 음악 종료 후 게임 오버 또는 결과 처리 등을 추가할 수 있습니다.
    }
}
반응형

댓글