Menu
CoddyTech

Tertabrak!

Termasuk bagian Dasar-Dasar Scripting Unity dalam perjalanan Unity di Coddy. Pelajaran 63 dari 67.

challenge icon

Tantangan

Sedang

Saatnya menghadapi bahaya. Pertahankan semua yang sudah dibuat pada langkah sebelumnya, lalu akhiri game saat sebuah blok menyentuh pelari:

  • Keduanya adalah kubus dengan lebar 1 unit, jadi sebuah blok menyentuh pelari saat posisi x keduanya berjarak kurang dari 1 dan posisi y keduanya berjarak kurang dari 1.
  • Periksa setiap blok setelah bergerak, pada setiap frame. Saat terjadi sentuhan, catat Game over dan matikan skrip dengan enabled = false, agar pelari, blok, dan proses pemunculan semuanya berhenti.

Tekan Play dan lihat berapa lama kamu bertahan, lalu tekan Check.

Coba sendiri

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 = 0f;
            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;
            if (blocks[i].transform.position.y < -1f)
            {
                Destroy(blocks[i]);
                blocks.RemoveAt(i);
            }
        }
    }
}

Semua pelajaran di Dasar-Dasar Scripting Unity