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.
Défi
MoyenDémarre Coin Rush : fais rouler la balle avec les flèches.
- Dans
Ball.cs, dansStart(), définisrb = GetComponent<Rigidbody>();. - Dans
FixedUpdate(), lisfloat x = Input.GetAxis("Horizontal");etfloat z = Input.GetAxis("Vertical");, puis appellerb.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
1Corps rigide
Gravité et massePousser avec AddForceSauter avec une impulsionFixedUpdate pour la physiqueVitesseCorps cinématiquesRécapitulatif : plateforme de lancement4Coroutines
InvoquerInvokeRepeating, CancelInvokeVotre première coroutineBoucles dans les coroutinesArrêter les coroutinesRécapitulatif : compte à rebours7Rotation
Angles d’EulerQuaternionsRegardez dans la direction où vous vous déplacezTourner en douceurRécapitulatif : tourelle10Projet : Évasion de l’arène
L’arèneLes chasseurs2Collisions
OnCollisionEnterQu’est-ce que j’ai touché ?Se briser à l’impactRester au solRebond et frictionFormes des collidersRécapitulatif : mur destructible5Projet : Course aux pièces
La balle roulanteDes pièces à ramasser3Déclencheurs
Colliders déclencheursOnTriggerEnterObjets à ramasserLes caisses gardent le resteZones mortellesEntrée et sortieRécapitulatif : clé et porteEntraînez-vous par vous-même : Playground Unity