티스토리 뷰
너무 졸리지만, 일주일동안 안했기 때문에 열심히 해본다. 게임을 하면서 당연하다고 생각했던 기능들이 생각보다 하나하나 다 설정한 것이었다.
Gamelog 12. 맵이 커졌다
좁은 곳에서 구현을 하고 게임오브젝트가 계속 떨어졌었지만, 이번에는 맵을 더 키워서 구현해본다.
Gamelog 12_1. 마찰을 없애보자.
지금은 카메라 안에만 구현을 해두었지만, 실제로는 이외의 부분을 다 사용할 수 있다. 게임에 보이는 부분만 저 카메라 안인 것이다. 즉, 더 넓은 스테이지를 만들 수 있다.
Main Camera가 플레이어와 함께 이동하는 것으로 가로 스크롤
게임이나 세로 스크롤
게임을 만들 수 있다.
void LateUpdate() {
Vector3 pos = this.transform.position;
pos.z = -10;
Camera.main.gameObject.transform.position = pos;
}
Camera.main.gameObject
로 메인 카메라에 액세스 할 수 있다.
또한 이 카메라는 '씬 상의 모든 게임 오브젝트가 이동을 끝낸 후' 움직여야 한다. 그렇지 않으면 게임 오브젝트가 뒤늦게 움직이고 화면 떨림이 발생할 수 있다.
따라서, FixedUpdate
가 아닌 LateUpdate
를 사용해야 한다.
메인 카메라 밖의 부분까지 게임 맵을 확장시킨다. 확장시킬 때 왼쪽은 보통 시작지점으로 인식되기 때문에 짧게, 오른쪽은 길게 만들었다.
카메라가 캐릭터를 쫓도록 스크립트를 적용한 후 실행시키면, 메인카메라의 범위만 보이게 된다.
하지만, 점프를 할 때 화면이 위로 이동하는 것은 가로스크롤과 세로스크롤이 병합한 형태이므로 고정하는 것이 필요하다.
void LateUpdate() {
Vector3 pos = this.transform.position;
pos.z = -10;
pos.y = base_pos.y;
Camera.main.gameObject.transform.position = pos;
}
pos.y = base\_pos.y
를 통해 원래 위치의 y값을 기억해두고 고정시킨다.
그러면 이렇게 가로스크롤로 고정된 게임을 만들 수 있다. 위는 막지 않았기 때문에 캐릭터가 이동은 된다.
Gamelog 12_2. 마찰을 없애보자.
현재 게임은 벽에 붙은 채로 계속 앞으로 나아가면 벽에 붙어있게 된다. 마찰때문이며, 마찰을 없애서 벽을 매끄럽게 해야한다.
프로젝트 뷰에서 Physics Material 2D
를 생성한다.
프로젝트뷰에 생긴 야구공모양 아이콘을 클릭하여 Friction
을 0으로 변경한다.
부딪히지 않도록 바닥 오브젝트를 제외한 양옆 벽돌과 떠있는 벽돌에 모두 새로운 Asset을 적용한다.
벽이 미끌미끌해져서 더이상 마찰이 없도록 구현됐다.
Gamelog 12_3. 게임을 더 편하게
현재 Box Collider로 인해 이 블럭들을 뚫고 점프를 할 수 없다.
이때는 Platform Effect 2D
컴포넌트를 사용하여 아래에서 점프를 하면 뚫을 수 있고, 위에서는 내려올 수 없는 게임을 만들 수 있다.
Platform Effector 2D
컴포넌트를 추가하고, 기존에 있던 Box Collider 2D
에 효과를 적용하기 위해 Used By Effector
를 적용한다.
이렇게 표시가 되는데 사실 뭔지는 잘 모르겠다.
그러면 이렇게 위에서 아래로 올라갈 수 있는 플랫폼 오브젝트가 완성된다.
'프로그래밍 > Unity' 카테고리의 다른 글
Gamelog 14. 강의를 따라한다 (0) | 2023.02.20 |
---|---|
Gamelog 13. 점수를 얻었다 (0) | 2023.02.15 |
Gamelog 11. 중력으로 던진다 (0) | 2023.02.14 |
Gamelog 10. 중력을 이용해본다 (0) | 2023.02.06 |
Gamelog 09. 뭔가 하는 느낌이다. (0) | 2023.02.05 |