Menu
CoddyTech

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.

challenge icon

Desafio

Médio

Comece o Coin Rush com a bola. O Inspector dá uma force de 10 a Ball.

  • Em Start(), armazene o Rigidbody da bola em rb.
  • Em FixedUpdate(), empurre a bola com as setas: Input.GetAxis("Horizontal") ao longo de x e Input.GetAxis("Vertical") ao longo de z, ambas multiplicadas por force.
  • 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.
    }
}
quiz iconTeste seus conhecimentos

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