Menu
CoddyTech

De plus en plus vite

Fait partie de la section Les bases du scripting dans Unity du Journey Unity de Coddy. Leçon 54 sur 85.

challenge icon

Défi

Moyen

Chaque capture accélère la chute des étoiles.

  1. Ajoute [SerializeField] private float speedUp = 0.5f;.
  2. Dans le bloc if de la capture, à côté de score++;, ajoute fallSpeed += speedUp;. Pas dans ResetStar() : les ratés l’appellent aussi.

Appuie sur « Jouer » et attrape-en quelques-unes : chaque étoile tombe plus vite. Puis appuie sur « Vérifier ».

Essayez vous-même

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

Toutes les leçons de Les bases du scripting dans Unity

Entraînez-vous par vous-même : Playground Unity