6주차 과제로 여러 방식으로 움직이는 액터들을 만들어 보았다
앞/뒤로 이동하는 발판 액터를 만들었는데 뭔가 끝 지점에 도달하면 잠시 멈췄다가 다시 이동하면 좋을 것 같아서
적당히 잘 왔다갔다하는 코드에 FTimerHandle
과 SetTimer()
를 사용해서 작동해보니
영상에 보이는 것 처럼 끝에 도착해서 삐걱거리는 형태가 되었다.
로그를 찍어보니
Distance
와 DistanceLimit
(950)을 비교하는 부분에서 처음 반대 방향으로 갈때 Distance
가 950보다 충분히 작아지지 않아서 삐걱거린다는 것을 알았다
그래서 아예 저 비교문을 바꾸기 위해 반대편에 도착하면 Distance
를 0으로 초기화해주고 발판의 위치도 반대편에 도달했을 때 좌표값에 차이가 약간 있을 수 있어서 이걸 직접 보정해주는 방식으로 바꿨다
잘 동작하는 것을 볼 수 있다. 근데 혹시 몰라서 로그도 찍어봤는데 이상한 점이 있었다. 아니 사실 이상한 것도 아니고 당연한 것이었다.
2.
로그가 찍히고 나서 1.
로그가 찍혔는데 SetTimer()
를 호출하고 나서 AddActorWorldOffset()
이 호출하고 로그를 찍었기 때문이다.
이 부분도 SetTimer()
를 호출하고 바로 return
을 해서 원하는 동작을 하도록 했다.
이렇게 다 수정하고 나서 보니 처음 코드에서도
SetTimer()
를 호출하고 바로return
했으면 제대로 동작되지 않았을까 라는 생각이 들었다
실제로는 제대로 동작하지 않았다.DistanceLimit
을 넘어서고나서 멈췄다가, 다시Tick()
함수가 호출되었을 때 바로 다시Distance
와DistanceLimit
을 비교하는 코드를 만나서, 그대로 멈춰있었다