Menu
CoddyTech

게임판

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으로 재설정하는 대신 간격을 빼면, 간격을 넘긴 프레임의 나머지 시간이 보존되어 박자가 늦어지지 않습니다.

challenge icon

챌린지

쉬움

머리는 셀 (-3, 0, 0)에 있는 초록색 큐브입니다. Snake에는 tick(0.15초)와 direction(Vector3.right)이 있습니다.

  1. private float timer;를 추가합니다.
  2. Update()에서 Time.deltaTime만큼 타이머를 증가시킵니다. 타이머가 tick에 도달하면 타이머에서 tick을 빼고 Step()을 호출합니다.
  3. 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을 따라 머리를 한 칸 이동
    }
}
quiz icon실력 점검

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

Unity 게임: 3D 스네이크의 모든 레슨