원시 프롬프트
다음 스킬 강화를 구현해보자! 이번에는, 기본 마법 투사체에 관통이 들어가는거야.
* 몬스터에게 충돌해서 몬스터를 소멸시킨 투사체가 사라지지 않고 멀리까지 간다. 단, 투사체 유지 시간까지만.
* CardItem의 Effect 컬럼에 PIERCE라고 쓴 카드를 선택하면 이 효과를 받게 된다.
프롬프트를 짜줘
프롬프트
Unity 2D 탑뷰 로그라이크 프로젝트에서 ‘기본 마법 투사체(Projectile)’에 관통(Pierce) 강화를 추가해줘. 요건은 아래와 같다.
[요구사항]
1) CardItem 테이블에서 플레이어가 카드를 선택했을 때,
- Effect 컬럼 값이 "PIERCE" 인 카드를 선택하면 관통 효과가 활성화된다.
- "PIERCE"는 수치가 필요 없는 토글형 효과다(있으면 ON).
- 기존 카드 선택 흐름(예: CardSelectUI → ApplyCardEffect 또는 SkillManager/PlayerStats 연동)에 맞춰 구현하되,
최소한 아래 공개 API를 제공해: PlayerPassive.SetPierceEnabled(bool enabled).
2) 관통 효과 설명
- 관통 활성화 시, 투사체가 적과 충돌하더라도 **즉시 소멸하지 않는다**.
- 투사체는 기존과 동일하게 ‘유지 시간(lifetime)’이 끝나면 소멸한다.
- 벽/지형 등 환경 충돌(Obstacle/Wall 레이어) 시에는 기존 로직 그대로 소멸한다.
- 동일 적에게 다중 히트가 중복으로 들어가지 않도록 OnTriggerEnter2D 기반 단발 판정으로 처리한다
(또는 필요 시 최근 타격한 대상 해시셋을 둬서 중복 방지).
3) 대미지
- 투사체 대미지는 기존과 동일하게 PlayerStats.Attack(혹은 AttackPower) 을 사용한다.
- 적에게 충돌하면 Damageable/EnemyHealth 컴포넌트에 대미지를 가한다.
4) 인스펙터/설정
- 투사체 프리팹(Projectile)에는 bool pierceEnabled 필드가 있고, 기본값은 false.
- 발사 시에 PlayerPassive 의 설정을 읽어 투사체.pierceEnabled 를 셋업한다.
- 기존 speed, lifetime 등은 현행 그대로 사용.
[구현 지시]
A. PlayerPassive.cs (신규 또는 기존)
- public void SetPierceEnabled(bool enabled)
- public bool HasPierce { get; private set; }
- 게임 시작 시 false, "PIERCE" 카드 적용 시 true.
B. Card 적용부 (예: CardEffectApplier.cs 또는 SkillManager.cs)
- CardItem.Effect == "PIERCE" 를 인식하여 PlayerPassive.SetPierceEnabled(true) 호출.
C. Projectile.cs (기존 수정)
- public bool pierceEnabled;
- 발사 시 Shooter(또는 Player)에서 PlayerPassive.HasPierce 값을 받아 pierceEnabled 세팅.
- OnTriggerEnter2D(Collider2D other):
* if (other.CompareTag("Enemy")) {
enemy.TakeDamage(attackPower);
if (!pierceEnabled) Destroy(gameObject);
}
* if (other.CompareTag("Obstacle") || other.CompareTag("Wall")) { Destroy(gameObject); }
- lifetime 초과 시 Destroy(gameObject).
D. 테스트 시나리오
- PIERCE 카드 미적용: 적 히트 즉시 투사체 소멸(기존과 동일).
- PIERCE 카드 적용: 적 히트 후에도 투사체 유지되며 lifetime 동안 계속 진행,
다른 적도 타격 가능. 벽 충돌 또는 lifetime 종료 시 소멸.
E. 데이터 연동(예시)
- CardItem(Effekt, Value)에서 Effect=="PIERCE"를 발견하면 Value는 무시.
- 카드 선택 UI → 선택 확정 시 위 B 로직 호출.
위 내용을 반영해 필요한 스크립트(예: PlayerPassive.cs, Projectile.cs 수정, 카드 적용부 수정)를 생성/수정하고,
인스펙터에 필요한 필드를 노출해줘. 주석은 한국어로 친절하게 달아줘.

무난하게 성공!
'AI 게임 제작 > AI 코딩' 카테고리의 다른 글
| 경험치 구슬 획득, 레벨 업, 대미지 효과음 재생 구현 (0) | 2025.09.28 |
|---|---|
| 스킬 강화 - 폭발 구현 (0) | 2025.09.28 |
| 빙글빙글 도는 불덩이 스킬 효과 구현 (0) | 2025.09.28 |
| 프로토타입 완성 (0) | 2025.09.27 |
| 성공/실패 처리 구현 (0) | 2025.09.27 |