Menu
CoddyTech

세 개의 레인

Coddy Unity 여정의 실제 게임 만들기 섹션에 포함된 레슨. 56개 중 27번째.

이 장에서는 무한 러너 게임을 만듭니다. 러너는 3개 차선이 있는 도로를 달리며, 자신에게 다가오는 장애물을 피하기 위해 차선을 바꿉니다. 다음 레슨에서는 도로의 속도가 빨라지고, 거리가 화면에 표시되며, 충돌하면 달리기가 끝나고 다시 달릴 수 있는 버튼이 나타나고, 최고 기록이 저장됩니다. 러너는 앞으로 이동하지 않습니다. z = 0에 머물고 장애물이 러너 쪽으로 이동하므로 도로는 끝없이 이어집니다. 게임에는 Runner, Spawner, Obstacle, GameManager의 네 스크립트가 있으며, 지금은 마지막 세 스크립트가 비어 있습니다.

차선에서 달리는 러너는 자동차처럼 조종하지 않습니다. 정해진 몇 개 위치 중 하나에만 있을 수 있습니다. 위치를 정수로 저장하고, 키를 누르면 숫자를 바꾼 다음, 그 숫자로 위치를 계산합니다. 이 창문 청소용 승강기는 서로 3유닛 떨어져 있는 건물의 5개 층을 오갑니다.

[SerializeField] private float floorHeight = 3f;
[SerializeField] private float moveSpeed = 6f;
private int floor = 0;

void Update()
{
    if (Input.GetKeyDown(KeyCode.UpArrow)) floor++;
    if (Input.GetKeyDown(KeyCode.DownArrow)) floor--;
    floor = Mathf.Clamp(floor, 0, 4);

    Vector3 p = transform.position;
    p.y = Mathf.MoveTowards(p.y, floor * floorHeight, moveSpeed * Time.deltaTime);
    transform.position = p;
}

GetKeyDown은 한 번 누를 때마다 한 층씩 이동하게 합니다. 반면 GetKey를 사용하면 키를 누르고 있는 매 프레임마다 한 층씩 올라갑니다. Mathf.Clamp는 숫자가 건물의 층 범위를 벗어나지 않게 하므로, 꼭대기 층에서 위쪽 키를 눌러도 아무 일도 일어나지 않고, 다음에 아래쪽 키를 누르면 곧바로 3층으로 이동합니다. Mathf.MoveTowards는 초당 moveSpeed 유닛의 속도로 승강기를 층 쪽으로 부드럽게 이동시키고 정확히 그 층에서 멈춥니다. 한 프레임 만에 그 위치로 점프하지 않습니다. 위치를 복사해서 변경한 다음 다시 할당하는 이유는 transform.position.y를 단독으로 설정할 수 없기 때문입니다.

challenge icon

챌린지

중급

러너와 함께 Endless Runner를 시작하세요. Inspector에서 Runner에 laneWidth 2.5와 laneSpeed 15를 지정하고, lane은 왼쪽 레인일 때 -1, 가운데 레인일 때 0, 오른쪽 레인일 때 1입니다. Runner의 Update()에서:

  • 왼쪽 또는 오른쪽 화살표 키를 누를 때마다 lane이 해당 방향으로 1씩 바뀝니다. 키를 누르고 있어도 1씩만 바뀝니다.
  • lane은 -1보다 작아지거나 1보다 커지지 않습니다.
  • 러너는 초당 laneSpeed 단위의 속도로 x축을 따라 lane * laneWidth까지 미끄러지며, y와 z는 그대로 유지합니다.

나머지 세 스크립트는 지금은 그대로 둡니다. Play를 누르고 게임을 클릭한 다음 레인을 바꾼 뒤 Check를 누르세요.

직접 해보기

using UnityEngine;

public class Runner : MonoBehaviour
{
    public float laneWidth = 2.5f;
    public float laneSpeed = 15f;
    private int lane = 0;   // -1은 왼쪽 레인, 0은 가운데 레인, 1은 오른쪽 레인

    void Update()
    {
        // 화살표 키로 레인을 변경한 다음 해당 레인의 x 좌표를 향해 이동
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

실제 게임 만들기의 모든 레슨