티스토리 뷰
이번에 만들어볼 게임은 미로찾기이다. 간단할 것 같지만, 처음해보는 부분들을 추가하여 진행해볼 예정이다. 일단, 이번에 할 부분은 기존에 한 것들을 응용하는 것이라 어렵지 않았다.
Gamelog 22. 미로찾기 게임 만들기(1)
Gamelog 22_1. 만들고자 하는 것을 정리한다.
- 맨 아래에서 미로 시작
- 미로
- 곳곳에 열쇠가 숨겨져 있음
- 벽을 통과할 수 없음
- 처음과 끝이 뚫려있음
- 미로 바깥으로 이동하지 못함
- 캐릭터
- 키보드로 움직일 수 있음
- 캐릭터시 시야가 한정되어 있음
- 열쇠 3개를 모아야 보물을 획득할 수 있음
- 보물
- 열쇠 3개를 모은 캐릭터가 접근해야 사라짐
- 보물 습득시 게임이 종료됨
- 보물 습득시 게임 종료화면으로 이동함
- 다시시작 버튼을 누르면 바로 미로 게임이 시작됨
Gamelog 22_2. 시작하기
세로로 긴 미로를 만들기 위해 기존 사용하던 1024x768이 아닌 768x1024의 화면크기를 새로 생성해준다.
그리고 Sorting Layer도 기존과 같이 3개를 분리하여 설정해주었다.
Gamelog 22_3. 미로만들기
이제 미로를 그릴 차례이다. 미로를 한땀한땀 그려줘야 하므로, 미로 예시이미지를 바탕에 깔아주고 진행한다.
한 2~3번 그려봤는데 이 방식이 훨씬 편했다.
미로로 사용할 패턴이 있는 블록 오브젝트를 선택한 뒤 Tiled
로 설정해준다.
이 설정이 있어야 블록 크기를 변형했을 때 모양이 변형되지 않는다.
블록의 이름은 wall
로 지정하여 복사하며 그려주고,Empty Game Object
를 생성하여 walls
로 묶어 정리해준다.
그리고 샘플로 사용했던 미로 이미지를 제거하고
미로 배경으로 사용할 이미지를 넣어준다.
이때, 배경이미지의 Sorting Layer
는 BackGround
로 설정한다.
모든 wall에 Box Collider 2D
컴포넌트를 추가한다.
그리고 이제 노가다가 시작되는데, 모든 Sprite Renderer
에 있는 Size와 Box Collider 2D
에 있는 Size을 동일하게 만들어준다.
그러면 이렇게 전체 미로벽이 Box Collider로 감싸지게 된다.
이거 굉장히 힘든 작업이었는데 다른 방법이 있는지 잘 모르겠다.
Gamelog 22_4. 캐릭터만들기
이번에는 개구리를 캐릭터로 해준다.
우물안 개구리의 탈출 느낌으로 배경을 다시 바꿀까 라는 생각이 문득 든다.
애니메이션을 만들기 위해 3개의 이미지를 선택한 후 드래그한다.
애니메이션을 저장해준다.
개구리를 아래에 배치해주고 실행을 하여 애니메이션 움직임을 확인한다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 키를 누르면 스프라이트가 이동한다
public class OnKeyPress_MoveSprite : MonoBehaviour
{
public float speed = 2; // 속도:Inspector에 지정
float vx = 0;
float vy = 0;
bool leftFlag = false;
void Update()
{ // 계속 시행한다
vx = 0;
vy = 0;
if (Input.GetKey("right"))// 만약 오른쪽 키가 눌리면
{
vx = speed; // 오른쪽으로 나아가는 이동량을 넣는다
leftFlag = false;
}
if (Input.GetKey("left"))// 만약 왼쪽 키가 눌리면
{
vx = -speed; // 왼쪽으로 나아가는 이동량을 넣는다
leftFlag = true;
}
if (Input.GetKey("up"))// 만약 위 키가 눌리면
{
vy = speed; // 위로 나아가는 이동량을 넣는다
}
if (Input.GetKey("down"))// 만약 아래 키가 눌리면
{
vy = -speed; // 아래로 나아가는 이동량을 넣는다
}
}
void FixedUpdate()// 계속 시행한다(일정 시간마다)
{
// 이동한다
this.transform.Translate(vx / 50, vy / 50, 0);
// 왼쪽 오른쪽 방향을 바꾼다
this.GetComponent<SpriteRenderer>().flipX = leftFlag;
}
}
이제 캐릭터가 움직이는 스크립트를 적용해준다.
위의 스크립트를 사용할 경우 캐릭터 좌우 전환을 하며 키보드로 움직일 수 있다.
이제 개구리에도 Box Collider를 적용한다.
Box Collider는 2개로 머리와 몸통을 따로따로 설정하여 정확도를 높여주었다.
이제 그러면 미로벽에 부딪히며 개구리 캐릭터를 키보드로 움직일 수 있게 되었다.
Gamelog 22_4. 보물상자 만들기
이제 보물상자를 상단에 완료표시로 배치해주고, Box Collider를 설정해준다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class OnCollision_StopGame : MonoBehaviour {
public string targetObjectName; // 목표 오브젝트 이름 : Inspector에 지정
void Start() {
Time.timeScale = 1;
}
void OnCollisionEnter2D(Collision2D collision) {
// 만약 충돌한 것의 이름이 목표 오브젝트였다면
if (collision.gameObject.name == targetObjectName) {
// 시간을 멈춘다
Time.timeScale = 0;
}
}
}
보물상자에 캐릭터가 도달했을 때, 게임이 종료되게 하기 위해Time.timeScale=0
스크립트를 적용한다.
미로찾기 게임은 이렇게 완성을 할 수도 있지만, 이건 너무 간단하기 때문에 앞서 말한 열쇠와 시야제한을 다음 게시글에 해본다.
'프로그래밍 > Unity' 카테고리의 다른 글
Gamelog 24. 미로찾기 게임 만들기(3) (0) | 2023.04.19 |
---|---|
Gamelog 23. 미로찾기 게임 만들기(2) (2) | 2023.04.13 |
Gamelog 21. 총알피하기 게임 만들기(5) (0) | 2023.04.04 |
Gamelog 20. 총알피하기 게임 만들기(4) (0) | 2023.04.03 |
Gamelog 19. 총알피하기 게임 만들기(3) (2) | 2023.03.26 |