Menu
CoddyTech

Nhanh hơn nữa

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 54 trên 85.

challenge icon

Thử thách

Trung bình

Mỗi lần bắt được sao sẽ khiến các ngôi sao rơi nhanh hơn.

  1. Thêm [SerializeField] private float speedUp = 0.5f;.
  2. Trong câu lệnh if khi bắt được sao, thêm fallSpeed += speedUp; bên cạnh score++;. Không thêm vào ResetStar(): khi bắt hụt cũng gọi hàm này.

Nhấn "Chơi" và bắt vài ngôi sao: mỗi ngôi sao sẽ rơi nhanh hơn. 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);
            ResetStar();
        }
        else if (star.position.y < 0f)
        {
            ResetStar();
        }
    }

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

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