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

유니티5 독학하기 그 88.75번째 걸음-발판생성에 관련된 문제해결 part1

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

안녕하세요?


지난번 포스팅까지는 어떻게 해서 패럴랙스 스크롤에서 선인장과 구름이 제가 원하는 빈도로 나오지 않아서 애를 먹어가면서 어떻게 수정하는 것을 포스팅 해 보았습니다. 그럼 이번 포스팅에서는 초원이던 바닥이 사막바닥으로 바뀌고 나서, 너무 주인공의 앞에서 절벽이 생성되는 듯한 느낌을 받을 수 있었습니다. 그래서 이 오류를 수정하기 위해서 이런저런 시도를 했는데, 내용이 너무 길어서 2파트로 나누어서 포스팅을 올리고자 합니다.



먼저 GameManager.cs라는 유니티5의 스크립트를 찾아서 가도록 해 봅니다.



먼저 가설을 하나 확인해 보기 위해서 발판이 바뀌는 시점을 더 멀리 걸어가서 나오는 것으로 해 보도록 합니다. 이게 startPoint라는 부분에서 생성이 되어서 지금까지 이런 문제가 생겼다면, 이렇게 발판이 바뀌는 시점이 더 뒤로 가면, 플레이어 캐릭터가 아래로 떨어질 것으로 기대가 됩니다.



실제로 제 예상대로 플레이어 캐릭터가 아래로 추락하는 것을 볼 수 있었습니다. 그래서 결론은 사막발판이 startPoint에서 시작하는 바람에, 주인공 캐릭터가 있는 바닥은 미처 생성이 되지 않아서 아래로 떨어지는 것을 볼 수 있었습니다.



그래서 일단 발판을 만드는 스크립트를 찾아 가도록 해 봅니다.




일단 여기서 처음에는 spawnPosition이라는 지역변수가 이 발판들의 시작지점을 결정한다는 것을 알 수는 있는데, 그래서 새로운 게임 오브젝트를 하나 만들어서, 이렇게 위치를 옮겨 다니면서, 마지막에 가서는 새 발판이 생성될 때, 그 발판들의 startPoint가 되도록 하는 게 어떻겠나 하는 생각이 들었습니다.



그래서 아이디어의 실현을 위해서 먼저 새로운 게임 오브젝트를 하나 만들도록 합니다.



그리고 새로운 C# 스크립트도 하나 만들어 주도록 합니다.



그리고 이 스크립트를 새로 생성된 게임 오브젝트에 붙여 주도록 합니다.




먼저 새로 만들어진 스크립트를 인스턴스화 시켜서 다른 스크립트에서도 간섭할 수 있도록 해 줍니다.



그리고 나서 Vector3형식의 변수를 선언한 다음. 이 게임 오브젝트의 위치를 변경해 주도록 합니다. 여기서 하나 중요한 것은 이 형식을 기억해야 한다는 것 입니다.


게임오브젝트.transform.position = Vector3 형식의 변수;


이런 형식을 지키기만 하면, 게임 오브젝트의 위치를 원하는 좌표로 바꿀 수 있습니다. 일단 이 형식은 유니티5로 게임을 개발하면서 얼마든지 나올 수 있으니, 기억을 해 주었으면 합니다.



그리고 다시 이전에 있는 LevelGenerator.cs 스크립트를 찾아 가도록 합니다.



일단 위 스크린샷처럼 스크립트 내에서 다른 스크립트의 변수를 가지고 올 수 도 있지만, 위 스크린샷의 붉은 색 줄을 친 부분처럼 반대로 현재 스크립트에서 다른 스크립트의 변수로 집어넣을 수 있습니다. 이를 명심하면서, 다음 포스팅에서 남은 부분을 올리도록 하겠습니다.

반응형