안녕하세요?


유티니5로 게임만들기 실습을 하면서, 이번에는 주인공 캐릭터에게 부스터를 구현하려고 했습니다만, 이게 절반만 성공했다는 것을 알려드리면서, 이를 한번 구현하는 과정을 포스팅 하고자 합니다.



먼저 지난번에 못했는 동전의 X축 좌표를 랜덤하게 바꾸기 위해서 Collectable.cs를 들어가도록 합니다.



그래서 이번에는 xPosition이라는 새로운 float형식의 변수를 만들어 주도록 합니다.



이렇게 해서 X축의 좌표까지 동전이 바뀌어서 나오는 것을 볼 수 있었습니다. 이제 다음 단계로 가서, 주인공 캐릭터에게 a키를 누르면 앞으로 순간적으로 튕겨나가는 부스터를 구현하도록 해 줍니다.



일단 이 작업을 위해서 PlayerControlloer.cs 스크립트를 방문하도록 합니다.



먼저 boostSpeed라는 float형식의 변수를 선언해 주도록 합니다.




그리고 나서 Update()항목에서 boostSpeed를 a라는 버튼을 누르면 속도가 UP되고, 떼면 부스터 속도가 없어지도록 한번 만들어 보도록 합니다.



그런 다음에 FixedUpdate라는 항목에다가 기존의 스피드+부스터 스피드 형식으로 지정을 하도록 합니다.



그리고 이제 입력키를 설정할 시간이 되었습니다.



먼저 제일 윗쪽에 있는 19라는 숫자를 20으로 증기시켜서 입력할 숫자를 더 만들어 보도록 합니다.



그리고 나서 위 스크린샷과 같이 입력을 하도록 합니다.




그런데 제대로 설정이 되지 않았다고 유니티5에서 Play버튼을 누르면 에러 메세지가 나오는 것을 볼 수 있습니다. 그래서 PlayerController.cs로 다시 가 보도록 합니다.



기존에 a라고 적었던 부분에다가 boost라고 입력키의 이름을 적어 두도록 합니다.



그리고 나서 다음으로는 위 스크린샷과 같이 이번에는 FixedUpdate()에서 속도를 계산하지 않고, Update()에서만 속도를 계산하도록 합니다. 그런데 문제가 발생한 것이 부스터를 누르는 손에서 손을 떼었는 데도 속도가 줄어들지 않았습니다.



그래서 이번에는 -값을 주어서 속도를 바꾸고자 했습니다. 그런데 이번에는 시작하자 마자 아예 주인공 캐릭터가 움직이지 않는 경우가 생겼습니다.



그래서 이번에는 if문으로 조건을 주어서 특정한 조건에서 +와 -가 되도록 설정을 해 주었습니다. 하지만 그래도 시작하자 마자 주인공 캐릭터가 여전히 움직이지 않는 것을 보여주고 있었습니다.




그래서 이번에는 GetButtonUp()이라는 함수를 가지고 왔습니다. 일단 이렇게 해서 시작하자 마자 주인공 제이크가 움직이지 못하는 현상을 해결할 수 있었지만, 문제는 여전히 a키를 떼어도 부스터가 적용이 된다는 문제점이 있었습니다.



그래서 한번 유니티5의 도움말을 들여다 보고나서, 이번에는 Snap이라는 것을 주어서 떼는 즉시 값이 바뀌도록 만들어 준다고 해서 한번 적용해 보고자 합니다.



버튼의 세팅에서 설정을 해 주며.....



일단 제대로 적용이 되는지 알아보기는 하자고 Debug.Log()를 한번 넣어 보았습니다.



이렇게 하는 것으로 a키를 떼는 것과 동시에 부스터를 꺼는 것은 확인이 되었는데, 왜인지 모르게 계속해서 한번 작동한 부스터가 계속해서 적용이 된다는 것을 알 수 있었습니다. 아마도 속도의 적용을 그냥 Update()함수가 아니라, FixedUpdate()함수에 적용을 해서 생기는 문제가 아닌가 하고 일단 생각만 하고 있습니다.

+ Recent posts