Menu
CoddyTech

Tiga Nyawa

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

challenge icon

Tantangan

Sedang

Tiga kali gagal mengakhiri permainan. Tambahkan [SerializeField] private int lives (scene mengaturnya ke 3).

  • Setiap bintang yang terlewat mengurangi satu nyawa dan mencatat Missed! Lives: 2, dengan jumlah nyawa yang tersisa.
  • Saat nyawa mencapai 0, catat juga Game over dan nonaktifkan script dengan enabled = false. Unity berhenti memanggil Update() pada script yang dinonaktifkan, sehingga bintang berhenti dan catcher tidak lagi bergerak.

Bintang yang tertangkap tetap menambah skor dan membuat bintang jatuh lebih cepat. Pertahankan semua yang sudah dibuat pada langkah-langkah sebelumnya.

Coba sendiri

using UnityEngine;

public class Catcher : MonoBehaviour
{
    [SerializeField] private float speed = 6f;
    [SerializeField] private Transform star;
    [SerializeField] private float fallSpeed = 3f;
    [SerializeField] private float speedUp = 0.5f;
    private int score;

    void Update()
    {
        float x = transform.position.x;
        if (Input.GetKey(KeyCode.RightArrow))
        {
            x += speed * Time.deltaTime;
        }
        if (Input.GetKey(KeyCode.LeftArrow))
        {
            x -= speed * Time.deltaTime;
        }
        x = Mathf.Clamp(x, -4f, 4f);
        transform.position = new Vector3(x, transform.position.y, transform.position.z);

        star.position += Vector3.down * fallSpeed * Time.deltaTime;

        if (Vector3.Distance(transform.position, star.position) < 1f)
        {
            score++;
            fallSpeed += speedUp;
            Debug.Log("Caught! Score: " + score);
            ResetStar();
        }
        else if (star.position.y < 0f)
        {
            ResetStar();
        }
    }

    void ResetStar()
    {
        star.position = new Vector3(Random.Range(-4f, 4f), 6f, 0f);
    }
}

Semua pelajaran di Dasar-Dasar Scripting Unity