Gravidade e Massa
Parte da seção Física e jogabilidade do Journey de Unity da Coddy. Lição 1 de 63.
Um Rigidbody entrega seu objeto à física do Unity, como o coco mostrou ao cair. A partir daí, a gravidade acelera o objeto em 9.81 m/s a cada segundo, e o Rigidbody tem configurações que determinam como isso acontece. Duas delas são mass, em quilogramas (1 para um Rigidbody novo), e useGravity (ativado para um Rigidbody novo).
A massa não altera a velocidade com que os objetos caem. A gravidade puxa um corpo pesado com mais força, e é exatamente na mesma proporção que é mais difícil acelerar esse corpo pesado; por isso, uma caixa de 1 kg e uma bigorna de 50 kg, soltas da mesma altura, aterrissam no mesmo quadro. A massa importa quando os corpos empurram uns aos outros: a bigorna empurra a caixa para o lado, e a caixa mal consegue mover a bigorna. Este balão de festa recebe uma massa leve e fica sem a ação da gravidade, então paira onde a cena o colocou:
void Start()
{
Rigidbody rb = GetComponent<Rigidbody>();
rb.mass = 0.2f;
rb.useGravity = false;
}Com useGravity desativado, o balão ainda tem sua massa e ainda se move quando algo esbarra nele: apenas a gravidade para de puxá-lo. Defina-o novamente como true e a gravidade volta a puxar o objeto de onde quer que ele esteja. Também não há ar na física do Unity, então uma pena cai como um tijolo, a menos que você dê ao Rigidbody um pouco de Amortecimento linear.
Desafio
FácilO guindaste mantém duas caixas suspensas sobre o cais: um Safe pesado e uma Box leve. Ambos têm um Rigidbody e um script CraneLoad, cujo weight o Inspector define (80 no Safe, 2 na Box).
- Quando o jogo começar, defina a massa do Rigidbody como
weighte impeça que a gravidade puxe a caixa, para que ela fique suspensa onde está. - Quando a tecla Space for pressionada, deixe a gravidade puxá-la novamente, para que ela caia.
Pressione Play, pressione Space e observe qual caixa chega primeiro ao chão; em seguida, Check.
Experimente você mesmo
using UnityEngine;
public class CraneLoad : MonoBehaviour
{
public float weight = 1f;
void Start()
{
// Defina a massa como weight e impeça que a gravidade puxe
}
void Update()
{
// Space: deixe a gravidade puxar novamente
}
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Física e jogabilidade
1Rigidbody
Gravidade e MassaEmpurrar com AddForcePular com um ImpulsoFixedUpdate para FísicaVelocidadeCorpos CinemáticosRevisão: Plataforma de Lançamento2Colisões
OnCollisionEnterO que eu acertei?Quebre no impactoNo chãoQuique e atritoFormas dos collidersRevisão: Parede destrutível5Projeto: Corrida das Moedas
A Bola RolanteMoedas para Coletar