Menu
CoddyTech

Étoile après étoile

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

challenge icon

Défi

Moyen

Fais apparaître une nouvelle étoile après chaque rattrapage et chaque raté.

  1. Écris void ResetStar() qui définit star.position = new Vector3(Random.Range(-4f, 4f), 6f, 0f);, et appelle-la lors du rattrapage à la place de l’ancienne ligne.
  2. Après le if du rattrapage, ajoute else if (star.position.y < 0f) qui appelle ResetStar();. Un else if ne s’exécute que si le if qui le précède était faux.

Appuie sur « Jouer » : chaque nouvelle étoile tombe à une nouvelle position x. 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);
            star.position = new Vector3(star.position.x, 6f, star.position.z);
        }
    }
}

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

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