Menu
CoddyTech

Trois vies

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

challenge icon

Défi

Moyen

Trois ratés mettent fin à la partie. Ajoute [SerializeField] private int lives (la scène lui attribue la valeur 3).

  • Chaque étoile manquée coûte une vie et affiche Missed! Lives: 2, avec le nombre de vies restantes.
  • Quand le nombre de vies atteint 0, affiche aussi Game over et désactive le script avec enabled = false. Unity cesse d’appeler Update() sur un script désactivé ; l’étoile s’arrête donc et le rattrapeur ne bouge plus.

Les étoiles attrapées rapportent toujours des points et accélèrent les étoiles. Conserve tout ce qui a été fait dans les étapes précédentes.

Essayez vous-même

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

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