Gravidade e Massa
Parte da seção Física e Jogabilidade do Journey de Unity da Coddy. Lição 1 de 71.
Um Rigidbody entrega seu objeto à física do Unity, assim como aconteceu quando você adicionou um em Add a Component. A partir daí, a gravidade acelera o objeto em 9.81 m/s a cada segundo, e o Rigidbody tem as 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 as coisas 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, então um caixote de 1 kg e uma bigorna de 50 kg soltos da mesma altura pousam no mesmo quadro. A massa importa quando os corpos empurram uns aos outros: a bigorna empurra o caixote para o lado, e o caixote quase não move a bigorna. Este balão de festa tem uma massa leve e não sofre a ação da gravidade, então fica suspenso 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 deixa de puxá-lo. Defina-o novamente como true e a gravidade volta a puxá-lo de onde quer que o objeto esteja. A física do Unity também não tem ar, então uma pena cai como um tijolo, a menos que você dê ao Rigidbody um pouco de Amortecimento Linear.
Desafio
FácilPendure as duas caixas e, em seguida, solte-as juntas ao pressionar Espaço.
- Em
Start(), abaixo da linhaGetComponent, definarb.mass = weight;erb.useGravity = false;. - Em
Update(), ao detectarInput.GetKeyDown(KeyCode.Space), definarb.useGravity = true;.
Pressione “Jogar” e aperte Espaço: o cofre pesado e a caixa leve caem juntos. Em seguida, pressione “Verificar”.
Experimente você mesmo
using UnityEngine;
public class CraneLoad : MonoBehaviour
{
public float weight = 1f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
// Defina a massa como weight e impeça que a gravidade puxe o objeto
}
void Update()
{
// Space: deixe a gravidade puxar o objeto novamente
}
}
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çamento4Corrotinas
InvocarInvocar repetidamente, Cancelar invocaçãoSua primeira corrotinaLoops em corrotinasInterrompendo corrotinasRevisão: contagem regressiva10Projeto: Fuga da Arena
A ArenaCaçadores2Colisõ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 ColetarPratique por conta própria: Playground de Unity