Aprende a crear un enemigo móvil en Unity 2D con C#. Configura un prefab con animación, añade un Capsule Collider como trigger, usa Rigidbody2D para la física y prepara un script limpio con variables esenciales. Con estas prácticas, tendrás un enemigo que patrulla de izquierda a derecha y listo para futuras colisiones y giros.
¿Cómo configurar el enemigo en Unity 2D?
Para empezar, crea un nuevo script de C# llamado Enemy y arrástralo al objeto enemigo. Asegúrate de que el prefab está bien configurado y aplica los cambios cuando edites una instancia. Así mantienes consistencia y evitas sorpresas al instanciar.
¿Qué collider trigger usar y cómo orientarlo?
- Añade un Capsule Collider 2D en la cabeza del enemigo.
- Actívalo como IsTrigger para que atraviese moneda o personaje.
- Oriéntalo en horizontal: mejora el ajuste con la forma del enemigo.
¿Para qué sirve el Rigidbody2D y qué restringir?
- Agrega un Rigidbody2D para poder mover con fuerzas o velocidad.
- Mantén una ruta horizontal: congela la posición en el eje Y.
- Ajusta gravedad y automasa según la necesidad del movimiento.
- Escala si es necesario: por ejemplo, 0.6 para equilibrar dificultad y jugabilidad.
¿Cómo mantener orden con el prefab?
- Resetea posición al probar cambios en la escena.
- Pulsa Apply cuando edites un hijo del prefab para guardar.
- Arrastra el script Enemy al objeto enemigo antes de programar.
¿Qué variables y patrones de código necesitas en el script Enemy?
Define solo lo esencial para mover y reiniciar el enemigo con claridad. Usa nombres expresivos y aprovecha el ciclo de vida de Unity para inicializar correctamente.
using UnityEngine;
public class Enemy : MonoBehaviour
{
// editable en el Inspector: velocidad de movimiento.
public float runningSpeed = 1.5f;
// referencia interna al Rigidbody2D.
private Rigidbody2D rigidBody;
// orientación: true mira a la derecha, false a la izquierda.
public bool facingRight = false;
// posición de arranque para reinicios controlados.
private Vector3 startPosition;
private void Awake()
{
rigidBody = GetComponent<Rigidbody2D>();
startPosition = this.transform.position;
}
private void Start()
{
this.transform.position = startPosition;
}
}
- runningSpeed: velocidad del enemigo editable desde el Inspector para iterar rápido.
- rigidBody: referencia a Rigidbody2D recuperada con GetComponent en Awake.
- facingRight: estado de orientación, por defecto false porque el enemigo mira a la izquierda.
- startPosition: guarda la posición inicial en Awake y la reaplica en Start para instancias limpias.
Este patrón separa inicialización del objeto y aparición en escena: Awake corre una vez cuando se cargan objetos, Start cuando el objeto se activa. Así evitas heredar posiciones de instancias previas del prefab.
¿Qué habilidades prácticas refuerzas al implementar el enemigo?
Más allá del código, la configuración correcta acelera el desarrollo y previene errores al escalar el proyecto.
- Configuración de física 2D: uso de Rigidbody2D, gravedad y restricciones por eje.
- Colisiones controladas: Capsule Collider como trigger para detectar sin bloquear.
- Gestión de estado: variable booleana de orientación con valores claros.
- Ciclo de vida de Unity: diferencias entre Awake y Start para inicializar y reinstanciar.
- Reutilización con prefabs: aplicar cambios en instancias con Apply para mantener coherencia.
- Balance de dificultad: escalado a 0.6 para ajustar el tamaño del enemigo a la jugabilidad.
- Rutas horizontales: congelar eje Y para patrullas izquierda-derecha estables.
¿Te gustaría que el enemigo reaccione al chocar con paredes o cambie de dirección con triggers? Cuéntame qué comportamiento quieres lograr y resolvemos dudas paso a paso.