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

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

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

안녕하세요?


지난번 포스팅에서 태양이 의도하지 않았는데 반짝반짝 거리면서 점멸을 하다가 나타나는 기현상을 보인다고 이야기 했었는데, 이 현상을 잡는 데도 상당한 노력이 들어가기는 들어갔습니다. 아무튼 그 시행착오를 하는 과정을 이번 포스팅에서 보여 드리고자 합니다.



역시나 FreeParallax.cs 스크립트를 찾아가도록 합니다.



그렇게 해서 이번에는 위 스크린샷처럼 단일 오브젝트를 의미하는 if문을 사용해서 이 경우에만 PlayerSpeed를 적용하게 하고, 그 외의 경우에는 기존의 공식을 따르라고 코딩을 하였습니다.



그리고 나서 다른건 다 같은데 Time.deltaTime이 곱해져서 빨라졌다는 생각이 들어서, 이걸 나누도록 코드를 짰습니다.



그렇게 해서 유니티5의 플레이 버튼을 눌렀더니, 태양이 아예 실종이 되는 사태가 벌어졌습니다.




그래서 한번 태양이 어디로 갔는가 했더니, 위 스크린샷척럼 엄청나게 먼 지역으로 가 버린 것을 확인할 수 있었습니다.



그래서 아예 playerSpeed001이라고 하는 광역 변수를 선언하도록 합니다.



그리고 FreeParallax.cs에서 플레이어 캐릭터의 스피드를 위 스크린샷처럼 playerSpeed001에 대입하도록 합니다.



그리고 이전에 있던 자리에 아예 위 스크린샷처럼 사용을 하도록 합니다.




그래도 상황이 전혀 나아지지 않았습니다. 거기다가 이전에도 보였던 스피드를 최저 속도로 내리면 태양이 하늘에 3개가 되는 듯한 현상까지 벌어지고 있었습니다. 그래서 이렇게 하는 것이 의미가 없는게 아닌가 하는 생각이 들기도 했습니다.



그래서 이번에는 플레이어 캐릭터를 조정하는 스크립트를 찾아 가도록 했습니다.



그래서 좀 더 속도가 빨리 오르라고 일정시간 기다리라는 코드 위에 스피드가 올라가라는 명령을 올렸습니다. 그리고 속도가 감속되고 있다가 스피드를 올리면 갑작스럽게 속도가 팍 하고 올라가는 경우가 있었는데, 이건 가속도에 6.0f라는 값이 더해져서 생겼기 때문에 for문의 조건에다가 upgradedBoosterSpeed에 6.0f의 값을 더해주도록 했습니다.


그런데 이런저런 상황을 자세히 살펴 보다 보니, 34라는 속도를 기준으로 태양의 점멸이 사라지는 것을 확인할 수 있었습니다.




그래서 생각한 바가 있어서 다시 FreeParallax.cs를 찾아가도록 했습니다.



여기서 34라는 플레이어 스피드를 기점으로 해서, 아예 속도를 나누어서 위 스크린샷처럼 34를 초과하면 playerSpeed의 마이너스 값으로 translate하라고 하고, 그게 아니면 위 스크린샷처럼 기존의 코드를 그대로 따르라고 명령을 했습니다.



위에 올라와 있는 gif파일을 보시면, 일정한 속도가 되기 전까지 아예 태양이 나오지 않는 문제점이 발생하고 있습니다. 이 문제를 어떻게 해결해야 할지 이 시점에서는 몰랐는데, 나중에 가서야 어디가 문제인지 겨우겨우 알게 되었습니다. 그래서 다음 포스팅에서는 이 문제를 해결하는 과정을 또 올리고자 합니다.

반응형