Menu
CoddyTech

Ngôi sao nối tiếp ngôi sao

Thuộc phần Những kiến thức cơ bản về lập trình trong Unity trong hành trình Unity của Coddy. Bài học 53 trên 85.

challenge icon

Thử thách

Trung bình

Đưa ngôi sao mới xuất hiện sau mỗi lần bắt được và mỗi lần bỏ lỡ.

  1. Viết void ResetStar() để đặt star.position = new Vector3(Random.Range(-4f, 4f), 6f, 0f);, rồi gọi hàm này khi bắt được sao thay cho dòng lệnh cũ.
  2. Sau câu lệnh if xử lý việc bắt sao, thêm else if (star.position.y < 0f) để gọi ResetStar();. else if chỉ chạy khi câu lệnh if đứng trước nó có giá trị false.

Nhấn Chơi: mỗi ngôi sao mới rơi xuống ở một vị trí x mới. Sau đó nhấn Kiểm tra.

Tự làm thử

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);
        }
    }
}

Tất cả bài học trong Những kiến thức cơ bản về lập trình trong Unity

Tự luyện tập: Playground Unity