[언리얼엔진] 충돌판정 버그

2025. 4. 6. 19:20·언리얼 엔진/트러블슈팅

1. 현상

분명 동일한 대상을 공격하는데 Player를 적중했다는 로그는 맨 첫 공격에만 출력되고 있습니다.

void ABoss::OnAttackStarted()
{
	LOG(TEXT("Begin"));
	AttackCollision->SetCollisionEnabled(ECollisionEnabled::QueryOnly);
	bIsAttacking = true;
}

void ABoss::OnAttackEnded()
{
	LOG(TEXT("Begin"));
	AttackCollision->SetCollisionEnabled(ECollisionEnabled::NoCollision);
	bIsAttacking = false;
}

void ABoss::OnMeshOverlapBegin(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp,
                               int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
	LOG(TEXT("Mesh Overlap Begin with!: %s"), *OtherActor->GetName());

	if (bIsAttacking)
	{
		if (OtherActor->ActorHasTag("Player"))
		{
			LOG(TEXT("Mesh Overlap Begin with Player!"));
			bIsAttacking = false;	
		}	
	}
}

분명 공격을 시작할 때에는 Collision을 활성화하고 공격 플래그도 활성화 했는데 뭐가 문제인지 도무지 모르겠더라구요.

 


 

2. 원인

혹시 프레임 차이로 콜리전이 먼저 활성화 되고 오버랩 이벤트를 판정한 후에 공격 플래그가 활성화 되는 건 아닐까 하는 마음에 콜리전 활성화 부분과 공격 플래그 활성화 순서를 바꿔봤습니다.

void ABoss::OnAttackStarted()
{
	LOG(TEXT("Begin"));
	bIsAttacking = true;
	AttackCollision->SetCollisionEnabled(ECollisionEnabled::QueryOnly);
}

void ABoss::OnAttackEnded()
{
	LOG(TEXT("Begin"));
	bIsAttacking = false;
	AttackCollision->SetCollisionEnabled(ECollisionEnabled::NoCollision);
}

 


 

결과

아니나 다를까 제 예상이 적중했습니다.. 프레임 차이로도 이런 문제가 발생할 수 있네요.. 코드 순서 작성에 신경 써야겠습니다.

'언리얼 엔진 > 트러블슈팅' 카테고리의 다른 글

[언리얼엔진] Material Parameter 수정  (0) 2025.04.08
[언리얼엔진] LevelSequence 스폰 유지  (0) 2025.04.08
[언리얼엔진] 루트 모션 재생하기  (0) 2025.04.05
[언리얼엔진] Socket 활용해서 MuzzleOffset 찾기  (0) 2025.02.19
[언리얼엔진] AI 액터 회전 시 끊기는 문제  (0) 2025.02.18
'언리얼 엔진/트러블슈팅' 카테고리의 다른 글
  • [언리얼엔진] Material Parameter 수정
  • [언리얼엔진] LevelSequence 스폰 유지
  • [언리얼엔진] 루트 모션 재생하기
  • [언리얼엔진] Socket 활용해서 MuzzleOffset 찾기
Meoyoung's Development Logs
Meoyoung's Development Logs
내가 보려고 만든 블로그
  • Meoyoung's Development Logs
    이게뭐영
    Meoyoung's Development Logs
  • 전체
    오늘
    어제
    • 분류 전체보기 (229)
      • 게임잼 (3)
      • 언리얼 엔진 (53)
        • 꿀 Tip ! (7)
        • 트러블슈팅 (24)
        • 최적화 (0)
        • 캐릭터 (2)
        • VR (1)
        • Lighting (2)
        • 멀티스레드 (2)
        • 문자열 (0)
      • C++ (31)
        • 문법 정리 (8)
        • [서적] Fundamental C++ 프로그래밍 .. (5)
        • [서적] 이것이 C++이다 (11)
        • [서적] Effective C++ (7)
      • C# (1)
        • [서적] 이것이 C#이다 (1)
      • 코딩테스트 (26)
        • 프로그래머스 (6)
        • 알고리듬 (13)
        • 자료구조 (7)
      • 컴퓨터 과학 (27)
        • 운영체제 (11)
        • 데이터베이스 (0)
        • 디자인패턴 (0)
        • 자료구조 (5)
        • 네트워크 (0)
        • 컴퓨터구조 (11)
      • 면접준비 (0)
        • C++ (0)
        • 운영체제 (0)
        • 자료구조 (0)
      • 프로젝트 (25)
        • [팀프로젝트] The Fourth Descenda.. (5)
        • [개인프로젝트] FPS 구현 맛보기 (5)
        • GetOutOf (15)
      • 기타 (54)
        • [강의] 이득우의 언리얼 프로그래밍 Part1 (10)
        • [강의] 이득우의 언리얼 프로그래밍 Part3 (12)
        • [강의] 소울라이크 개발 A-Z (4)
        • [강의] Udemy-2D (5)
        • [서적] 인생 언리얼5 (4)
        • 스파르타코딩클럽 (15)
        • 객체지향프로그래밍 (2)
        • 컴퓨터회로 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    게임개발
    쉘정렬
    경북게임잼
    자료구조
    선택정렬
    삽입정렬
    참가후기
    게임잼
    알고리즘
    셸정렬
    버블정렬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Meoyoung's Development Logs
[언리얼엔진] 충돌판정 버그
상단으로

티스토리툴바