Menu
CoddyTech

La balle roulante

Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 28 sur 71.

Ce chapitre permet de créer un petit jeu, Coin Rush. Tu fais rouler une balle dans une arène entourée de murs à l’aide des flèches et tu ramasses des pièces avant la fin du temps imparti. Deux scripts se partagent le travail, comme dans un projet Unity : Ball déplace la balle et gère le score et le temps, et Coin se trouve sur chaque pièce. Coin.cs commence par être une classe vide, que tu complèteras dans la prochaine leçon.

Une balle roule quand tu la pousses au lieu de la déplacer. Pousse son Rigidbody avec AddForce et laisse sa rotation libre : la force déplace la balle, et la friction du sol accroche sa partie inférieure et la fait tourner. Cette boule de bowling roule sur sa piste tant que tu maintiens Espace :

public float push = 6f;
private Rigidbody rb;

void Start()
{
    rb = GetComponent<Rigidbody>();
}

void FixedUpdate()
{
    if (Input.GetKey(KeyCode.Space))
    {
        rb.AddForce(Vector3.forward * push);
    }
}

Une balle qui roule sans glisser tourne à une vitesse égale à sa vitesse divisée par son rayon. Ainsi, une balle de rayon 0.5 qui se déplace à 3 unités par seconde tourne à 6 radians par seconde (rb.angularVelocity). Modifie plutôt son transform.position, ou bloque sa rotation dans les contraintes du Rigidbody, et elle glissera comme un palet sans tourner. Une sphère unie d’une seule couleur a le même aspect dans les deux cas : pour voir le roulement, observe Angular Velocity dans la section Info du Rigidbody pendant que le jeu tourne.

challenge icon

Défi

Moyen

Démarre Coin Rush : fais rouler la balle avec les flèches.

  1. Dans Ball.cs, dans Start(), définis rb = GetComponent<Rigidbody>();.
  2. Dans FixedUpdate(), lis float x = Input.GetAxis("Horizontal"); et float z = Input.GetAxis("Vertical");, puis appelle rb.AddForce(new Vector3(x, 0f, z) * force);.

Appuie sur « Jouer », clique dans le jeu et fais rouler la balle : elle tourne en avançant. Puis appuie sur « Vérifier ».

Essayez vous-même

using UnityEngine;

public class Ball : MonoBehaviour
{
    public float force = 10f;
    private Rigidbody rb;

    void Start()
    {
    }

    void FixedUpdate()
    {
        // Pousse la balle avec les touches fléchées : Horizontal sur l’axe x, Vertical sur l’axe z.
    }
}

Toutes les leçons de Physique et gameplay

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