원시 프롬프트
코덱스 프롬프트를 짜줘
* 경험치 구슬을 먹을 때 마다 pop.mp3 사운드 재생
* 플레이어가 경험치 구슬을 획득하는 순간 재생해야 함
* 많은 경험치 구슬을 한 번에 획득할 경우에도 사운드를 건너뛰지 말고 매번 재생해야 함
프롬프트
경험치 구슬 획득
Unity C# 스크립트를 작성해줘. 조건은 다음과 같아:
1. 플레이어가 경험치 구슬을 획득할 때마다 pop.mp3 사운드가 재생되어야 한다.
2. 사운드는 플레이어가 경험치 구슬을 획득하는 순간에 재생되어야 한다.
3. 많은 경험치 구슬을 한 번에 획득할 경우에도 사운드를 건너뛰지 말고, 획득한 개수만큼 pop.mp3가 매번 재생되어야 한다.
4. AudioSource.PlayOneShot()을 사용해서 사운드가 겹쳐도 잘 들리도록 구현해라.
5. ExpOrb 프리팹에 붙일 수 있는 스크립트로 만들어라.
경험치 구슬을 한 번에 많이 먹을 때 소리가 뭉개지는 현상 개선
Unity C#로 경험치 구슬 획득 사운드(pop.mp3) 재생에 ‘폭주 제한’을 넣어줘.
요구사항:
1) 초당 최대 재생 수를 제한하는 토큰 버킷을 구현(playsPerSecond, burstCapacity, minInterval 설정 가능).
2) 한 프레임에 너무 많이 재생되지 않도록 프레임당 최대 N회 캡도 함께 적용.
3) ExpOrb 획득 순간마다 AudioLimiter.TryPlayOneShot(popClip, volume, pitchJitter) 호출하도록 연결.
4) pitchJitter(±0.03)로 미세 피치 랜덤을 주어 귀 피로 감소.
5) 싱글턴 매니저는 DontDestroyOnLoad로 유지.
6) 코드 끝에 ‘유니티에서 해야 할 세팅(오브젝트 생성, 클립 할당, Tag/Collider 설정)’ 체크리스트도 주석으로 써줘.
레벨 업
Unity C# 스크립트를 작성해줘. 목적: 레벨업 시 스킬 강화 카드 패널이 등장하면서 levelup.mp3가 정확히 1회 재생되게 한다.
요구사항:
1) 플레이어가 레벨업(필요 EXP 도달)하면 게임을 일시정지(Time.timeScale=0)하고 LevelUpPanel(캔버스 UI)을 활성화한다. 패널엔 3장의 스킬 카드 버튼이 있고, 하나를 고르면 적용 후 패널을 닫고 게임을 재개(Time.timeScale=1)한다.
2) LevelUpPanel이 “처음 표시되는 순간마다” levelup.mp3를 AudioSource.PlayOneShot으로 1회 재생한다. 패널이 열린 채로 프레임이 지나도 반복 재생되지 않게 한다(가드 플래그 사용).
3) 레벨업이 패널 오픈 중 추가로 발생하면 즉시 또 열지 말고 큐에 적립한다. 사용자가 선택하여 패널을 닫는 순간 큐에 대기 중인 레벨업이 있으면 다시 패널을 열고 그때 levelup.mp3를 다시 1회 재생한다.
4) 오디오는 UI 전용 AudioSource(예: Canvas 상 “UIAudioSource”)에서 재생한다. Time.timeScale=0 상태에서도 재생되도록 PlayOnPause 관련 설정을 고려하고(필요 시 AudioListener.pause 미사용), Loop는 끈다.
5) public AudioClip levelupClip 필드(에디터 할당) 또는 Resources/levelup.mp3 자동 로드 둘 중 하나를 지원한다(둘 다 있으면 에디터 할당 우선).
6) 공개 메서드/이벤트:
- OnLevelUpTriggered(): EXP 시스템에서 호출, 패널 오픈을 트리거하거나 큐에 적립.
- ShowLevelUpPanel(): isOpen 가드로 중복 방지, 패널 활성화, SFX 1회 재생.
- OnCardSelected(int index): 선택 스킬 적용, 패널 닫기 → 큐 확인 → 있으면 재오픈.
- HideLevelUpPanel(): 패널 비활성화 및 게임 재개.
7) 상태 관리: bool isOpen, int pendingLevelUps 카운터. 중복 호출/다중 재생/프레임 중복 실행 방지.
8) 에디터에서 빠르게 붙일 수 있도록 [SerializeField] 참조(패널, 버튼들, AudioSource, levelupClip)와 간단한 Setup 주석을 포함한다.
9) 버튼 onClick은 코드에서 리스너로 연결한다(예: cardBtn0→OnCardSelected(0), …).
마지막에 “유니티 세팅 체크리스트” 주석도 넣어줘:
- Canvas에 LevelUpPanel 존재(처음엔 SetActive(false))
- Canvas에 UIAudioSource(AudioSource) 존재
- levelup.mp3 임포트 후 levelupClip 슬롯에 할당(또는 Resources/levelup.mp3 경로 배치)
- EXP 시스템에서 레벨업 시 OnLevelUpTriggered() 호출 연결
대미지
Unity C# 스크립트를 작성해줘. 목적: 플레이어의 마법 투사체가 몬스터에 ‘충돌한 순간’에만 shoot.mp3를 1회 재생한다. 몬스터와 부딪히지 않으면 재생되지 않는다.
요구사항:
1) 투사체가 몬스터에 닿는 순간(2D면 OnTriggerEnter2D/OnCollisionEnter2D, 3D면 OnTriggerEnter/OnCollisionEnter)만 SFX를 재생한다.
2) 몬스터 식별은 Tag("Enemy") 또는 Layer("Enemy") 중 하나로 설정 가능하게 만들어라(인스펙터에서 선택할 수 있도록 enum/토글 제공).
3) 오디오는 AudioSource.PlayOneShot(shootClip)으로 재생한다. Time.timeScale=0일 때도 들리도록 기본 설정을 유지한다(AudioListener.pause 사용 금지).
4) public AudioClip shootClip 필드(에디터 할당)와 Resources/shoot.mp3 자동 로드 둘 다 지원하되, 에디터 할당이 우선한다.
5) 오디오 재생 주체는 다음 중 선택 가능:
- A) 투사체 객체에 붙은 AudioSource
- B) 전역 SFX 매니저(싱글턴) 또는 Canvas의 UIAudioSource
인스펙터에서 둘 중 하나를 참조로 넣을 수 있게 하고, 없으면 투사체에 AudioSource를 자동 추가해 재생한다.
6) 같은 프레임에 중복 충돌 콜백이 들어와도 사운드가 과도하게 겹치지 않도록 ‘프레임 가드’를 둔다(동일 프레임 다중 호출 시 1회만 재생). 단, 연속 프레임에서 다른 적과 다시 충돌하면 정상 재생된다.
7) 관통(피어스)하는 투사체도 매번 몬스터와 부딪힐 때마다 재생되게 하되, 인스펙터에서 최소간격(예: 0.02~0.05초) 쿨다운을 옵션으로 줄 수 있게 해라(기본값 0, 즉 제한 없음).
8) 오디오 볼륨(0~1), 피치 지터(±0.03 정도)를 인스펙터에서 조정할 수 있도록 공개 필드로 제공해 귀 피로를 줄일 수 있게 해라.
9) 오브젝트 풀링을 고려해 OnEnable에서 내부 상태(프레임 가드/타이머)를 초기화한다.
10) 디버깅을 위해 유효 충돌 시 로그(한 줄) 옵션을 켜고 끌 수 있게 해라(기본 꺼짐).
메서드/구조:
- OnHitEnemy(Collider/Collider2D/Collision): 몬스터 충돌 판정 후 TryPlayShootSFX() 호출.
- TryPlayShootSFX(): 프레임 가드/쿨다운 검사 → AudioSource.PlayOneShot(shootClip, volume) 실행.
- ResetStateOnEnable(): 풀링 복귀 시 내부 타이머/가드 초기화.
마지막에 “유니티 세팅 체크리스트” 주석도 포함해줘:
- 몬스터에 Tag = "Enemy" 또는 Layer = "Enemy" 지정
- 프로젝트에 shoot.mp3 임포트, 필요한 경우 Resources 폴더에도 배치
- 투사체 Collider(2D/3D) 및 Rigidbody(적절한 isTrigger/충돌 설정) 확인
- 필요 시 전역 SFX AudioSource(선택사항) 배치 및 참조 연결

'AI 게임 제작 > AI 코딩' 카테고리의 다른 글
| 첫 화면, 환경 설정 구현 (0) | 2025.09.29 |
|---|---|
| 스테이지 배경음악 재생 기능 구현 (0) | 2025.09.28 |
| 스킬 강화 - 폭발 구현 (0) | 2025.09.28 |
| 스킬 강화 - 관통 효과 구현 (0) | 2025.09.28 |
| 빙글빙글 도는 불덩이 스킬 효과 구현 (0) | 2025.09.28 |