Menu
CoddyTech

세 개의 레인

Coddy의 Unity 게임: 스카이 레인 코스 레슨. 20개 중 1번째.

이 과정에서는 하나의 게임 전체를 만들며, 수업마다 기능 하나씩 구현합니다. 러너는 하늘 높이 난 도로를 따라 달립니다. 장애물, 막대, 벽이 앞에 나타나고, 차선에는 동전이 늘어서 있으며, 오래 버틸수록 도로가 더 빨라집니다.

프로젝트에는 이미 스크립트 네 개가 있습니다. 플레이어에 붙은 Runner, Road, GameManager, Coin입니다. 지금은 대부분 비어 있고 수업을 진행하면서 차례로 채워 나갑니다. 카메라에 붙은 다섯 번째 스크립트 CameraFit은 이미 제공됩니다. 세로로 긴 휴대폰 화면에서 세 차선이 모두 들어오도록 시야를 넓혀 주므로, 수정할 필요가 없습니다.

러너는 앞으로 이동하지 않습니다. 왼쪽, 가운데, 오른쪽의 세 차선 사이에서만 이동합니다. 차선을 -1, 0 또는 1의 정수로 유지하고, x축에서 해당 위치를 계산합니다.

float targetX = lane * laneWidth;

러너에는 CharacterController가 있으므로 controller.Move(motion)으로 이동합니다. Move는 이번 프레임에 얼마나 이동할지를 받으며, 도착할 위치를 받는 것이 아닙니다. targetX에 도달하려면 현재 러너의 위치와 그 위치 사이의 차이만큼 이동합니다.

float x = targetX;
Vector3 move = new Vector3(x - transform.position.x, 0f, 0f);
controller.Move(move);

Mathf.Max(-1, lane - 1)은 lane - 1과 같지만, 값이 -1보다 작아지지는 않습니다. 따라서 가장 왼쪽 차선보다 더 왼쪽으로 갈 수 없습니다.

challenge icon

챌린지

쉬움
  1. Runner.Update에서 A 키나 왼쪽 화살표 키를 눌렀을 때(Input.GetKeyDown), lane = Mathf.Max(-1, lane - 1)을 설정하세요.
  2. D 키나 오른쪽 화살표 키를 눌렀을 때는 lane = Mathf.Min(1, lane + 1)을 설정하세요.
  3. 그런 다음 위에서처럼 targetX를 계산하고 controller.Move로 러너를 그 위치로 이동시키세요.
  4. ‘플레이’를 누르고 A와 D 키를 눌러 보세요.

직접 해보기

using UnityEngine;

public class Runner : MonoBehaviour
{
    public float laneWidth = 2.5f;

    public int lane;

    private CharacterController controller;

    void Start()
    {
        controller = GetComponent<CharacterController>();
    }

    void Update()
    {
        // 여기서 레인을 변경합니다
    }
}

Unity 게임: 스카이 레인의 모든 레슨

직접 연습해 보세요: Unity 플레이그라운드