본문 바로가기

UE5(언리얼)

[언리얼5/UE5] SpawnActor사용시 주의 (안움직임)

반응형

 

이렇게 하면 Monster는 잘 생성된다.


FActorSpawnParameters params;
ASMonster* Monster = GetWorld()->SpawnActor<ASMonster>(m.Key , location, GetActorRotation(), params);

 

근데 스크린 샷 처럼 공중에서 내려오질 않는다. 중력도 받지 않는다.

Tick에 들어가지 않는건가? MovementComponent가 없는건가? 모든 것을 체크해봤지만 이미 존재했다.

 

답은 Controller가 없다는 것이다.

FActorSpawnParameters params;
ASMonster* Monster = GetWorld()->SpawnActor<ASMonster>(m.Key , location, GetActorRotation(), params);
Monster->SpawnDefaultController();

 

이렇게 DefaultController를 만들어주면 정상적으로 움직인다...

버그를 해결하는데 오랜시간이 걸렸지만, 굉장히 단순한 문제였고,,,
덕분에 까먹지 못할 것 같다...!

 

디버깅과정

 

Tick이 잘 호출되는 지, Forward 크기가 1로 잘 출력되는 지는 다 확인했다.

그래서 AddMovementInput이 실행되지 않는 것이라고 추측했고, 디버깅을 해봤다.

 

 

축축 따라가다보면 이상한 점이있다.

 

여가서 IsMoveInputIgnored()라고 있는데 이 함수에서 Controller를 체크해주는 것이다.

그래서 초반에는 여기도 잘 실행되고 있구나 하고 넘어갔다. (if문도 다 통과함)

 

근데 이게 웬걸 Controller는 존재하지않았고, IsMoveInputIgnored 앞에 not 연산자 때문에 If문에 들어가는 것이었다...

쩝... 다들 이 블로그를 보고 빠르게 해결했으면 좋겠다!

 

 

반응형