본문 바로가기
유니티5 독학 & 게임 제작

유니티5 독학하기 그 91.8번째 걸음-패럴렉스 스크롤 단일 오브젝트 문제 part1

by 인터넷떠돌이 2018. 9. 27.
반응형

안녕하세요?


벌써 몇번 째인지는 모르겠습니다만, 아무튼 간에 태양과 같이 패럴렉스 스크롤에서 항상 제 자리를 지켜야 하는 물체를 가지고서 문제가 해결이 되었다가 또 다른 종류의 문제가 터지기만 여러번인 듯 합니다. 아무튼 이번 포스팅 부터는 좀 길게 시리즈로 올리면서, 제대로 문제가 해결되기는 되었는데 그 때 까지의 시행착오를 한번 올려 보고자 합니다.



시작은 FreeParallax.cs를 찾아가면서 시작을 하도록 해 봅니다.



일단 여기서 영구히 패럴렉스 스크롤에서 위치를 유지해야 하는 오브젝트의 x축상 위치를 지정하는 코드를 한번 살펴 보았습니다. 일단 여기서는 어떻게 따로 건드릴 것은 없다는 생각이 들었습니다.



그래서 이번에는 카메라가 따라가는 것이 문제인가 싶어서 한번 여기를 살펴 보고자 합니다.



그래서 이전에 설정해 놓은 대로 FixedUpdate()라고 되어 있는 것을 확인 할 수 있습니다. 이를 한번 혹시나 싶어서 다시 Update()로 바꾸어서 한번 더 확인을 해 볼까 합니다.




여전히 시간을 지나면서 태양이 앞으로 전진 했다가 뒤로 돌아오는 것을 볼 수 있었습니다.



그래서 한번 유니티5의 스크립팅 API를 살펴 보니까, 여기서 현재 속도라는 값이 있는 것을 볼 수 있었습니다. 그래서 이걸 어떻게 손 보면 나아지지 않을 까 하는 생각이 들었습니다.



일단 맨 처음 속도를 뜻하는 velocity를 선언하는 부분을 주석 처리 했습니다.



그런데 여기서 에러가 나오는 것을 볼 수 있었습니다. 분명히 플레이어의 스피드를 의미하는 코드를 가져 오기는 했습니다만, 문제는 여기는 3차원 벡터가 와야 하는 자리이지, 속도값인 float이 올 곳은 아니라는 것을 알 수 있었습니다.




일단 이 상태로 한번 유니티5 상에서 플레이 버튼을 눌러서 확인을 해 보았습니다.



그래서 다시 한번 더 FixedUpdate()를 사용하는 것으로 돌아 오도록 했습니다.



여기서도 처음에는 안정적인가 싶었지만, 그래도 10000이상 거리가 벌어지면 태양이 결국 플레이어 캐릭터를 앞질러서 앞으로 가 버리는 것을 볼 수 있었습니다.



실제로 씬뷰에서 봐도, 이렇게 앞으로 나가 버린 것을 볼 수 있었습니다.




이렇게 헤메이는 와중에도 한번 생각이 들어서 혹시 프레임 레이트가 떨어져서 이런 현상이 벌어진 것이 아닐까 하는 생각이 들었습니다. 그래서 Edit>Project Settings>Time으로 들어가서, TimeManager에서 위 스크린샷처럼 Maximum Allowed Time을 60프레임에 고정이 되는 값을 입력해 주도록 합니다. 그러면 이전에 3프레임까지 떨어지는 것을 확실하게 바꾸어 주는 것으로 할 수 있습니다.



그래도 여전히 10000이 넘는 거리를 주인공 캐릭터가 달리고 나면, 태양이 앞으로 밀려가는 현상이 나오기는 합니다.



다만 차이점이 있다면 좀 더 태양이나 화면이 더 부드럽게 움직인다는 것을 알 수 있었습니다. 그래서 프레임 레이트를 조절한 것이 완전히 헛되지만은 않았지만, 그래도 여전히 태양이 부자연스럽게 플레이어 캐릭터 보다 더 빠른 속도로 움직인다는 것을 알 수 있었습니다. 이 문제는 계속해서 해결을 하는데 도전을 해 보아야 합니다.

반응형