Menu
CoddyTech

Bintang demi Bintang

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

challenge icon

Tantangan

Sedang

Kirim bintang baru setiap kali tertangkap dan setiap kali terlewat. Bintang terlewat saat nilai y-nya turun di bawah 0. Baik tertangkap maupun terlewat, bintang dimulai ulang pada y = 6 dan z = 0, dengan x acak antara -4 dan 4. Random.Range(min, max) mengembalikan float acak antara min dan max, jadi Random.Range(-4f, 4f) memilih nilai x tersebut.

Kedua kasus memulai ulang bintang dengan cara yang sama, jadi tulis sekali dalam sebuah fungsi, void ResetStar(), lalu panggil fungsi itu dari keduanya. Bintang yang terlewat tidak menambah skor. Pertahankan semua yang 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;
    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++;
            Debug.Log("Caught! Score: " + score);
            star.position = new Vector3(star.position.x, 6f, star.position.z);
        }
    }
}

Semua pelajaran di Dasar-Dasar Scripting Unity