언리얼 엔진 본캠프 6주차-7 언리얼 엔진 C++ : 움직이는 Actor

정재훈·2025년 1월 26일
0

unreal engine

목록 보기
18/45

6주차 과제로 여러 방식으로 움직이는 액터들을 만들어 보았다

앞/뒤로 이동하는 발판 액터를 만들었는데 뭔가 끝 지점에 도달하면 잠시 멈췄다가 다시 이동하면 좋을 것 같아서

적당히 잘 왔다갔다하는 코드에 FTimerHandleSetTimer()를 사용해서 작동해보니

영상에 보이는 것 처럼 끝에 도착해서 삐걱거리는 형태가 되었다.

로그를 찍어보니

DistanceDistanceLimit(950)을 비교하는 부분에서 처음 반대 방향으로 갈때 Distance가 950보다 충분히 작아지지 않아서 삐걱거린다는 것을 알았다

그래서 아예 저 비교문을 바꾸기 위해 반대편에 도착하면 Distance를 0으로 초기화해주고 발판의 위치도 반대편에 도달했을 때 좌표값에 차이가 약간 있을 수 있어서 이걸 직접 보정해주는 방식으로 바꿨다

잘 동작하는 것을 볼 수 있다. 근데 혹시 몰라서 로그도 찍어봤는데 이상한 점이 있었다. 아니 사실 이상한 것도 아니고 당연한 것이었다.

2. 로그가 찍히고 나서 1. 로그가 찍혔는데 SetTimer()를 호출하고 나서 AddActorWorldOffset()이 호출하고 로그를 찍었기 때문이다.

이 부분도 SetTimer()를 호출하고 바로 return을 해서 원하는 동작을 하도록 했다.

이렇게 다 수정하고 나서 보니 처음 코드에서도 SetTimer()를 호출하고 바로 return 했으면 제대로 동작되지 않았을까 라는 생각이 들었다
실제로는 제대로 동작하지 않았다. DistanceLimit을 넘어서고나서 멈췄다가, 다시 Tick()함수가 호출되었을 때 바로 다시 DistanceDistanceLimit을 비교하는 코드를 만나서, 그대로 멈춰있었다

profile
드가자

0개의 댓글