A Bola Rolante
Parte da seção Física e jogabilidade do Journey de Unity da Coddy. Lição 27 de 63.
Este capítulo cria um pequeno jogo, Coin Rush. Você rola uma bola por uma arena cercada por paredes usando as setas e coleta moedas antes que o tempo acabe. Dois scripts dividem o trabalho, como fariam em um projeto Unity: Ball move a bola e mantém a pontuação e o relógio, e Coin fica em cada moeda. Coin.cs começa como uma classe vazia, e a próxima lição a completa.
Uma bola rola quando você a empurra, em vez de posicioná-la. Empurre o Rigidbody com AddForce e deixe sua rotação livre: a força move a bola, e o atrito com o chão agarra a parte inferior da bola e a faz girar. Esta bola de boliche rola pela pista enquanto a tecla Espaço está pressionada:
public float push = 6f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
if (Input.GetKey(KeyCode.Space))
{
rb.AddForce(Vector3.forward * push);
}
}Uma bola que rola sem deslizar gira a uma velocidade igual à sua velocidade dividida pelo raio; portanto, uma bola de raio 0.5 que se move a 3 unidades por segundo gira a 6 radianos por segundo (rb.angularVelocity). Em vez disso, altere seu transform.position ou congele sua rotação em Constraints do Rigidbody, e ela deslizará como um disco, sem girar. Uma esfera simples de uma só cor parece igual nos dois casos: para ver o rolamento, observe Angular Velocity na seção Info do Rigidbody enquanto o jogo está em execução.
Desafio
MédioComece o Coin Rush com a bola. O Inspector dá uma force de 10 a Ball.
- Em
Start(), armazene oRigidbodyda bola emrb. - Em
FixedUpdate(), empurre a bola com as setas:Input.GetAxis("Horizontal")ao longo de x eInput.GetAxis("Vertical")ao longo de z, ambas multiplicadas porforce. - Deixe a rotação dela livre para que role.
Por enquanto, deixe Coin.cs como está. Pressione Play, clique no jogo e role pela arena, depois Check.
Experimente você mesmo
using UnityEngine;
public class Ball : MonoBehaviour
{
public float force = 10f;
private Rigidbody rb;
void Start()
{
}
void FixedUpdate()
{
// Empurre a bola com as setas: Horizontal ao longo de x, Vertical ao longo de z.
}
}
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