Menu
CoddyTech

La pelota rodante

Parte de la sección Física y jugabilidad del Journey de Unity de Coddy. Lección 28 de 71.

Este capítulo crea un pequeño juego, Coin Rush. Haces rodar una pelota por una arena amurallada con las flechas y recoges monedas antes de que se acabe el tiempo. Dos scripts comparten el trabajo, como lo harían en un proyecto de Unity: Ball mueve la pelota y se encarga de la puntuación y el reloj, y Coin está en cada moneda. Coin.cs empieza como una clase vacía, y la siguiente lección la completa.

Una pelota rueda cuando la empujas en lugar de colocarla. Empuja su Rigidbody con AddForce y deja que rote libremente: la fuerza mueve la pelota, y la fricción del suelo sujeta la parte inferior de la pelota y la hace girar. Esta bola de bolos rueda por su carril mientras mantienes pulsada la barra espaciadora:

public float push = 6f;
private Rigidbody rb;

void Start()
{
    rb = GetComponent<Rigidbody>();
}

void FixedUpdate()
{
    if (Input.GetKey(KeyCode.Space))
    {
        rb.AddForce(Vector3.forward * push);
    }
}

Una pelota que rueda sin deslizarse gira a una velocidad igual a su velocidad dividida por su radio, así que una pelota de radio 0.5 que se mueve a 3 unidades por segundo gira a 6 radianes por segundo (rb.angularVelocity). En cambio, modifica su transform.position o congela su rotación en Constraints del Rigidbody, y se deslizará como un disco sin girar. Una esfera sencilla de un solo color se ve igual en ambos casos: para observar el giro, mira Angular Velocity en la sección Info del Rigidbody mientras el juego está en marcha.

challenge icon

Desafío

Intermedio

Inicia Coin Rush: mueve la pelota con las flechas.

  1. En Ball.cs, dentro de Start(), asigna rb = GetComponent<Rigidbody>();.
  2. En FixedUpdate(), lee float x = Input.GetAxis("Horizontal"); y float z = Input.GetAxis("Vertical");; después, llama a rb.AddForce(new Vector3(x, 0f, z) * force);.

Pulsa «Jugar», haz clic en el juego y haz rodar la pelota: gira mientras se mueve. Después, pulsa «Comprobar».

Pruébalo tú mismo

using UnityEngine;

public class Ball : MonoBehaviour
{
    public float force = 10f;
    private Rigidbody rb;

    void Start()
    {
    }

    void FixedUpdate()
    {
        // Empuja la pelota con las flechas: Horizontal a lo largo del eje x, Vertical a lo largo del eje z.
    }
}

Todas las lecciones de Física y jugabilidad

Practica por tu cuenta: Playground de Unity