Garder la vitesse
Leçon 3 sur 19 du cours Jeu Unity : casse-briques de Coddy.
Une balle de casse-briques ne ralentit jamais. Son PhysicsMaterial fait l’essentiel du travail : une élasticité de 1 conserve toute la vitesse lors d’un rebond, et une friction de 0 empêche les murs de la ralentir. Les murs n’ont pas de matériau, et Unity fait par défaut la moyenne des valeurs des deux colliders : le 1 de la balle et le 0 d’un mur donnent un rebond à mi-vitesse. bounceCombine = Maximum et frictionCombine = Minimum permettent aux valeurs propres de la balle de l’emporter.
La physique n’est toujours pas exacte : une raquette en mouvement ajoute sa vitesse, et de petites erreurs s’accumulent au fil de centaines de rebonds. Ainsi, à chaque étape de la physique, la balle conserve sa direction et sa vitesse est réinitialisée :
rb.linearVelocity = rb.linearVelocity.normalized * 7f;Une balle ralentie à 2 unités par seconde retrouve une vitesse de 7 à l’étape suivante.
Défi
FacileFais rebondir la balle indéfiniment à vitesse constante.
- Dans
Awake()deBall, créenew PhysicsMaterial("Bouncy")avec une élasticité de 1 et les deux frottements à 0, définisbounceCombine = PhysicsMaterialCombine.MaximumetfrictionCombine = PhysicsMaterialCombine.Minimum; applique-le àGetComponent<Collider>().material. - Ajoute
FixedUpdate(): si la balle a été lancée,rb.linearVelocity = rb.linearVelocity.normalized * speed;
Appuie sur « Jouer » et lance la balle : elle rebondit sur chaque mur sans ralentir. Puis appuie sur « Vérifier ».
Essayez vous-même
using UnityEngine;
using UnityEngine.InputSystem;
public class Ball : MonoBehaviour
{
public Transform paddle;
public float speed = 9f;
Rigidbody rb;
bool launched;
void Awake()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
if (launched) return;
transform.position = paddle.position + Vector3.up * 0.5f;
if (Keyboard.current.spaceKey.wasPressedThisFrame) Launch(new Vector3(0.3f, 1f, 0f));
}
public void Launch(Vector3 direction)
{
launched = true;
rb.linearVelocity = direction.normalized * speed;
}
}
Toutes les leçons de Jeu Unity : casse-briques
Entraînez-vous par vous-même : Playground Unity