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.
Desafío
DifícilEl 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
angley la flecha hacia abajo lo reduce, aturnSpeedgrados por segundo, sin bajar nunca de 10 ni superar 60. Cada fotograma, establece la rotación del cañón enQuaternion.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
ballssea 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 depoweren la dirección del cañón, resta 1 aballsy registra cuántas quedan, comoBalls 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
MovePositionaspeedunidades por segundo, y haz que dé la vuelta cada vez que se alejerangeunidades de su punto de partida. - Cuando una bola (con la etiqueta
Ball) golpee el objetivo, registra el nombre del objetivo yhit!, comoTarget2 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
}
}
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
1Cuerpo rígido
Gravedad y masaEmpujar con AddForceSaltar con un impulsoFixedUpdate para físicaVelocidadCuerpos cinemáticosRepaso: plataforma de lanzamiento2Colisiones
OnCollisionEnter¿Qué golpeé?Romper al impactarDe pie sobre el sueloRebote y fricciónFormas de los collidersRepaso: muro destructible5Proyecto: Carrera de monedas
La bola rodanteMonedas para recoger