방치형 게임에서 아군 유닛이 적 몬스터에게 투사체를 발사하는 로직을 개발했었습니다.
저의 개발 의도는 단일 대상 타격이었지만
유닛들이 절묘하게 겹쳐있으면 겹쳐있는 유닛들에게 다중으로 타격이 들어가는 문제가 있었습니다.
sol1. OntriggerEnter2D 들어오면 isHit 변수 true 로 만들어주고 isHit 변수가 true 이면 return 시킴
public void OnTriggetEndter2D(Collider2D other)
{
if(isHit) return;
isHit=ture;
}
문제 : 몬스터들이 절묘하게 겹쳐있으면 뚫려버리고 겹친 몬스터들 다 때림
sol2. 타겟으로 설정한 몬스터의 이름이랑 비교 (※ 몬스터들 이름이 다 달라야함 )
public void OnTriggerEnter2D(Collider2D other)
{
if (other.name != targetMonster.name) // 핵심
return;
hitcount++;
AdjustValueByType(bulletType, targetMonster.GetType();
targetMonster.TakeDamage(damage);
RelocateBullet();
}
피드백, 아이디어, 비판 환영합니다
'Unity' 카테고리의 다른 글
Unity2D에서 Y축에 따른 레이어 자동 조절 (0) | 2025.01.31 |
---|---|
OnTriggerStay 작동 안할때 - Unity Rigidbody Sleep Mode (0) | 2025.01.31 |