Menu
CoddyTech

Campo de tiro con cañón

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

Un cañón está en un extremo de un campo de tiro, y tres objetivos se deslizan de lado a lado por el campo a distintas distancias. Inclinas el cañón hacia arriba y hacia abajo para alcanzar cada distancia y calculas el momento de cada disparo para que un objetivo cruce la línea de fuego. Una bola que alcanza un objetivo lo elimina y se consume; cualquier otra cosa que golpee un objetivo lo deja intacto. Los objetivos son cuerpos cinemáticos, así que los impactos nunca los empujan, y el cañón tiene cinco bolas.

Escribe dos scripts: Cannon en el Barrel y Target en cada objetivo.

challenge icon

Desafío

Difícil

El Inspector proporciona a Cannon ballPrefab (un Rigidbody: el prefab Ball, masa 2, con la etiqueta Ball), angle (30), turnSpeed (40), power (30) y balls (5).

  • La flecha hacia arriba aumenta angle y la flecha hacia abajo lo reduce, a turnSpeed grados por segundo, sin bajar nunca de 10 ni superar 60. Cada fotograma, establece la rotación del cañón en Quaternion.Euler(-angle, 0, 0): en Unity, un ángulo x positivo inclina la parte delantera hacia abajo, por lo que el signo menos la inclina hacia arriba.
  • La barra espaciadora dispara una bola mientras balls sea mayor que 0: créala a 1 unidad delante del centro del cañón, en la dirección de este, impúlsala con un impulso de power en la dirección del cañón, resta 1 a balls y registra cuántas quedan, como Balls left: 4. Cuando no queden bolas, la barra espaciadora no hace nada.

Cada objetivo tiene un Rigidbody cinemático, y el Inspector proporciona a Target speed y range (2 y 3 para Target1).

  • En cada paso de física, mueve el objetivo a lo largo del eje x con MovePosition a speed unidades por segundo, y haz que dé la vuelta cada vez que se aleje range unidades de su punto de partida.
  • Cuando una bola (con la etiqueta Ball) golpee el objetivo, registra el nombre del objetivo y hit!, como Target2 hit!, y destruye tanto el objetivo como la bola. Cualquier objeto que no sea una bola no lo afecta.

Pulsa Play y derriba los tres objetivos; después, pulsa Check.

Pruébalo tú mismo

using UnityEngine;

public class Cannon : MonoBehaviour
{
    [SerializeField] private Rigidbody ballPrefab;
    [SerializeField] private float angle = 30f;
    [SerializeField] private float turnSpeed = 40f;
    [SerializeField] private float power = 30f;
    [SerializeField] private int balls = 5;

    void Update()
    {
        // apunta con las flechas arriba y abajo, dispara con Space
    }
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Física y jugabilidad