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

유니티5 독학하기 그 91.7번째 걸음-부스터 문제의 해결

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

안녕하세요?


지난번 포스팅에서 부스터를 켜고 끄는 것을 자꾸 반복하니까, 태양의 움직임이 상당히 이상해 지는 것을 볼 수 있었습니다. 그래서 이번 작업은 부스터를 한번에 최대 속도가 되도록 만들지 않고, 서서히 최대 속도까지 올라가고, 서서히 최저 속도까지 내려가도록 만들어 보고자 합니다.



그래서 일단 플레이어 캐릭터를 컨트롤 하는 로직이 있는 스크립트인 PlayerController.cs를 찾아가도록 합니다.



여기서 일단 StartCoroutine()이라고 코루틴을 실행하는 함수와 StopCoroutine()이라고 해서 코루틴을 멈추는 함수를 사용해서, 부스터 버튼을 눌렀을 때, 그리고 떼었을 때 각각 속도를 올리고 줄이기 위한 코루틴이 상황에 맞도록 실행되고 멈추도록 만들어 줍니다.



그리고 속도를 서서히 올려주는 코루틴과 서서히 내려주는 코루틴인 각각의 SpeedUP과 SpeedDown을 만들어 주도록 합니다.



일단 유니티5에서 플레이 버튼을 눌러서 확인을 해 보도록 시도해 보았는데, 그런데 속도가 전혀 올라가지 않는 문제점이 나왔습니다. 그래서 다시 로직을 고치러 가 보도록 해야 합니다.



그래서 아예 위 스크린샷처럼 boostSpeed라는 변수에 i라는 변수의 값을 집어 넣는 과정을 for문 안에다가 집어 넣도록 합니다.




다른건 다 좋은 것 같은데, 문제는 감소를 눌렀을 경우 갑자기 마이너스 두자리 숫자의 값이 나오면서 주인공 캐릭터가 뒤로 확 날라가 버리는 것을 볼 수 있었습니다.



그래서 속도가 감소되는 코루틴에서는 j라는 새로운 지역 변수를 만든 다음에, 위 스크린샷처럼 기존의 boostSpeed에서 j값을 빼는 식으로 진행을 시키도록 했습니다.



그래서 서서히 속도가 줄어들기는 했는데, 문제는 최저로 떨어지는 속도가 3이어야 하는데, 여기서는 -3이라는 속도가 되는 것을 확인할 수 있었습니다.



그래서 For문에서 i의 최대범위가 0보다 크거나 같을 때 까지 값이 계속 내려가라고 지정을 했습니다.



이제서야 제대로 속도가 서서히 증가하고 감소되는 것을 볼 수 있었습니다. 그러나 그래도 여전히 나오는 문제점이 하나 있는데, 태양의 위치가 계속 앞으로 갔다가 뒤로 텔레포트 하는 것을 볼 수 있었습니다. 그래서 부스터의 문제가 아니라, 다른 문제가 있는 듯 한데, 방치해도 괜찮을 수 있지만, 그대로 해결하는 김에 계속 이걸 해결해 보려고 다음 포스팅 부터 시도를 하겠습니다.

반응형