세 개의 레인
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보다 작아지지는 않습니다. 따라서 가장 왼쪽 차선보다 더 왼쪽으로 갈 수 없습니다.
챌린지
쉬움Runner.Update에서 A 키나 왼쪽 화살표 키를 눌렀을 때(Input.GetKeyDown),lane = Mathf.Max(-1, lane - 1)을 설정하세요.- D 키나 오른쪽 화살표 키를 눌렀을 때는
lane = Mathf.Min(1, lane + 1)을 설정하세요. - 그런 다음 위에서처럼
targetX를 계산하고controller.Move로 러너를 그 위치로 이동시키세요. - ‘플레이’를 누르고 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 플레이그라운드