게임판
Coddy의 Unity 게임: 3D 스네이크 코스 레슨. 14개 중 1번째.
이 과정에서는 3D 스네이크를 만듭니다. 위에서 내려다본 15×15 보드 위에 정육면체로 된 뱀이 있습니다. 뱀은 한 번에 한 칸씩 움직이고, 화살표 키나 WASD로 방향을 바꾸며, 먹이를 먹고, 길어지고, 벽이나 자신의 꼬리에 부딪히면 죽습니다. 두 개의 스크립트로 실행합니다. 머리에는 Snake를 붙이고, GameManager는 다음 장에서 먹이가 등장할 때까지 비워 둡니다.
각 칸의 너비는 1단위이고 정수 좌표를 중심으로 합니다. x와 z는 -7부터 7까지이며, 모든 칸은 y 0에 놓입니다. 뱀은 칸 사이를 미끄러지듯 움직이지 않습니다. 0.15초와 같은 고정된 박자인 틱마다 한 칸씩 이동하고, 그사이에는 멈춰 있습니다.
Unity에서 박자는 타이머로 구현합니다. 매 프레임마다 Time.deltaTime을 더하고, 타이머가 간격에 도달하면 동작을 수행하고 간격을 뺍니다. 다음 비콘은 초당 한 번 깜박입니다.
public Light beacon;
public float interval = 1f;
private float timer;
void Update()
{
timer += Time.deltaTime;
if (timer >= interval)
{
timer -= interval;
beacon.enabled = !beacon.enabled;
}
}타이머를 0으로 재설정하는 대신 간격을 빼면, 간격을 넘긴 프레임의 나머지 시간이 보존되어 박자가 늦어지지 않습니다.
챌린지
쉬움머리는 셀 (-3, 0, 0)에 있는 초록색 큐브입니다. Snake에는 tick(0.15초)와 direction(Vector3.right)이 있습니다.
private float timer;를 추가합니다.Update()에서Time.deltaTime만큼 타이머를 증가시킵니다. 타이머가tick에 도달하면 타이머에서tick을 빼고Step()을 호출합니다.Step()에서 머리를direction을 따라 한 셀 이동시킵니다.
Play를 눌러 머리가 오른쪽으로 한 걸음씩 이동하는 모습을 확인합니다. 일단 머리가 보드 밖으로 나갑니다. 벽은 4과에서 다룹니다. 그런 다음 Check를 누릅니다.
직접 해보기
using UnityEngine;
public class Snake : MonoBehaviour
{
public float tick = 0.15f; // 두 단계 사이의 시간(초)
private Vector3 direction = Vector3.right;
void Update()
{
// tick초마다 Step()을 한 번 실행
}
void Step()
{
// direction을 따라 머리를 한 칸 이동
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.