Menu
CoddyTech

보드

Coddy의 Unity 게임: 3D 스네이크 코스 레슨. 14개 중 1번째.

이 과정에서는 3D Snake를 만듭니다. 위에서 내려다본 15×15 보드 위에서 큐브로 이루어진 뱀이 움직입니다. 뱀은 한 번에 한 칸씩 움직이고, 방향키나 WASD로 방향을 바꾸며, 먹이를 먹고 자라다가 벽이나 자기 꼬리에 부딪히면 죽습니다. Snake는 머리를 움직이고, GameManager는 먹이가 나타날 때까지 비어 있습니다. ‘플레이’를 누르면 게임이 실행되고, ‘확인’을 누르면 코드를 채점합니다.

각 칸의 너비는 1단위이며, 좌표는 -7부터 7까지의 정수입니다. 뱀은 미끄러지듯 움직이지 않습니다. 고정된 박자인 틱마다 한 칸씩 뛰어 이동하고, 그 사이에는 멈춰 있습니다. 틱은 타이머입니다. 매 프레임마다 Time.deltaTime을 더하고, 틱에 도달하면 동작을 실행한 뒤 타이머에서 틱을 뺍니다.

timer += Time.deltaTime;
if (timer >= 0.5f)
{
    timer -= 0.5f;
    Step();
}

타이머를 0으로 설정하는 대신 틱을 빼면, 틱을 넘긴 프레임의 일부 시간이 보존되어 틱이 점점 늦어지지 않습니다. 숫자가 아니라 tick 필드를 사용하세요.

challenge icon

챌린지

쉬움

머리가 매 틱마다 한 칸씩 이동하게 하세요.

  1. Snake에 private float timer;를 추가하세요.
  2. Update()에서 timer에 Time.deltaTime을 더하세요. timer >= tick이면 tick을 빼고 Step()을 호출하세요.
  3. Step()에서 transform.position에 direction을 더하세요.

‘플레이’를 누르세요. 머리가 오른쪽으로 한 칸씩 이동하며, 현재는 보드 밖으로 나갑니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using UnityEngine;

public class Snake : MonoBehaviour
{
    public float tick = 0.15f;   // 두 단계 사이의 시간(초)
    private Vector3 direction = Vector3.right;

    void Update()
    {
        // tick초마다 Step()을 한 번 실행
    }

    void Step()
    {
        // direction 방향으로 머리를 한 칸 이동
    }
}

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

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