Menu
CoddyTech

살아남고 점수 얻기

Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 85개 중 80번째.

이 단계에서는 Dodge the Blocks를 완성합니다. 타이머가 블록을 생성하고, 목록이 블록을 이동시키고 정리하며, 충돌을 검사하고, 점수가 초를 셉니다. float 앞에 있는 (int)는 소수 부분을 버립니다.

challenge icon

챌린지

중급

점수를 추가하고, 블록이 점점 더 빠르게 떨어지도록 하세요.

  1. private float score;와 [SerializeField] private float speedUp = 0.2f;를 추가하세요.
  2. Update()의 맨 위에서 Time.deltaTime을 score에 더하고, speedUp * Time.deltaTime을 fallSpeed에 더하세요.
  3. 충돌하면 "Game over! Score: " + (int)score를 로그에 출력하세요. (int)는 소수 부분을 버립니다. 12.7은 12로 표시됩니다.

‘플레이’를 누르고 살아남으세요. 충돌하면 점수가 로그에 출력됩니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using System.Collections.Generic;
using UnityEngine;

public class Runner : MonoBehaviour
{
    [SerializeField] private float speed = 6f;
    [SerializeField] private float laneEdge = 4f;
    [SerializeField] private GameObject blockPrefab;
    [SerializeField] private float spawnEvery = 1f;
    [SerializeField] private float fallSpeed = 5f;

    private List<GameObject> blocks = new List<GameObject>();
    private float timer;

    void Update()
    {
        Vector3 p = transform.position;
        p.x += Input.GetAxisRaw("Horizontal") * speed * Time.deltaTime;
        p.x = Mathf.Clamp(p.x, -laneEdge, laneEdge);
        transform.position = p;

        timer += Time.deltaTime;
        if (timer >= spawnEvery)
        {
            timer -= spawnEvery;
            Vector3 spot = new Vector3(Random.Range(-laneEdge, laneEdge), 10f, 0f);
            blocks.Add(Instantiate(blockPrefab, spot, Quaternion.identity));
        }

        for (int i = blocks.Count - 1; i >= 0; i--)
        {
            blocks[i].transform.position += Vector3.down * fallSpeed * Time.deltaTime;
            Vector3 b = blocks[i].transform.position;
            if (Mathf.Abs(b.x - transform.position.x) < 1f && Mathf.Abs(b.y - transform.position.y) < 1f)
            {
                Debug.Log("Game over");
                enabled = false;
                return;
            }
            if (b.y < -1f)
            {
                Destroy(blocks[i]);
                blocks.RemoveAt(i);
            }
        }
    }
}
quiz icon실력 점검

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

Unity 스크립팅 기초의 모든 레슨

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