Gravité et masse
Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 1 sur 71.
Un composant Rigidbody confie son objet à la physique de Unity, comme lorsque tu en as ajouté un dans Add a Component. À partir de là, la gravité accélère l’objet de 9.81 m/s chaque seconde, et le composant Rigidbody possède des paramètres qui déterminent comment cela se passe. Deux d’entre eux sont mass, en kilogrammes (1 pour un nouveau composant Rigidbody), et useGravity (activé pour un nouveau composant Rigidbody).
La masse ne change pas la vitesse de chute des objets. La gravité attire plus fortement un corps lourd, et il est exactement autant plus difficile d’accélérer ce corps lourd ; une caisse de 1 kg et une enclume de 50 kg lâchées de la même hauteur atterrissent donc à la même image. La masse compte lorsque des corps se poussent les uns les autres : l’enclume pousse la caisse sur le côté, tandis que la caisse ne déplace presque pas l’enclume. Ce ballon de fête a une masse faible et n’est pas soumis à la gravité, il reste donc suspendu là où la scène l’a placé :
void Start()
{
Rigidbody rb = GetComponent<Rigidbody>();
rb.mass = 0.2f;
rb.useGravity = false;
}Lorsque useGravity est désactivé, le ballon conserve sa masse et bouge toujours si quelque chose le heurte : seule la gravité cesse de l’attirer. Règle-le à nouveau sur true et la gravité l’attire de nouveau depuis l’endroit où se trouve l’objet. La physique de Unity ne tient pas compte de l’air non plus, alors une plume tombe comme une brique, à moins que tu ne donnes à son composant Rigidbody un peu de Linear Damping.
Défi
FacileSuspends les deux caisses, puis fais-les tomber ensemble en appuyant sur la barre d’espace.
- Dans
Start(), sous la ligneGetComponent, définisrb.mass = weight;etrb.useGravity = false;. - Dans
Update(), lors deInput.GetKeyDown(KeyCode.Space), définisrb.useGravity = true;.
Appuie sur « Jouer », puis sur la barre d’espace : le Safe lourd et le Box léger atterrissent ensemble. Puis appuie sur « Vérifier ».
Essayez vous-même
using UnityEngine;
public class CraneLoad : MonoBehaviour
{
public float weight = 1f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
// Définir la masse sur weight et empêcher la gravité d'attirer l'objet
}
void Update()
{
// Space : laisser la gravité attirer à nouveau l'objet
}
}
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