Equipar y configurar un arma en Unity 2D es clave para dar feedback y ritmo al combate. Aquí verás cómo preparar sprites en Sprite Editor, ajustar el pivot, escalar con pixels per unit, ordenar con sorting layer, elegir el collider adecuado y detectar colisiones con C#. Todo con una implementación funcional del daño tipo «toca y destruye».
¿Cómo preparar sprites y pivotes en Unity?
Para empezar, usa el sprite mode en «multiple» y corta las hojas en Sprite Editor. Si los elementos están muy separados, el corte automático funciona bien; si no, define celdas de 32x32. Nombrar correctamente cada slice mejora la organización y el flujo de trabajo.
- Abre la carpeta de sprites y activa el sprite mode «multiple».
- Corta en celdas de 32x32 o usa auto-slice si están muy separados.
- Nombra cada pieza: gem, potion, sword, axe, staff.
- Mueve el pivot al centro del mango de cada arma.
- Aplica los cambios para generar los nuevos elementos.
¿Qué nombres y cortes usar en los sprites?
- Usa nombres claros para búsquedas y referencias en scripts.
- Si el corte automático crea piezas más pequeñas, no hay problema.
- El mango no necesita área de daño: el pivot debe situarse ahí.
¿Qué tamaño y capas garantizan visibilidad del arma?
Al arrastrar el arma a la escena, puede verse demasiado grande. Ajusta su escala con pixels per unit. Asegura también su visibilidad con la sorting layer y, si hace falta, con order in layer para poner el arma delante o detrás del personaje según dirección.
- Cambia de 32 a 80 pixels per unit para igualar tamaño con el jugador.
- Pon el arma en la misma sorting layer que el player.
- Ajusta el order in layer según la dirección del movimiento.
¿Cuál collider elegir para formas irregulares?
El box collider rara vez encaja con hojas curvas o inclinadas. Puedes rotar el arma sobre Z hasta ~45° para alinearla temporalmente, pero la opción robusta es usar polygon collider.
- El box collider es simple pero impreciso con formas torcidas.
- El polygon collider se ajusta mejor, aunque es más costoso.
- Debe ser convexo: evita «pinchos» hacia dentro.
- Marca el collider como isTrigger para detectar enemigos sin bloquear.
¿Cómo detectar colisiones y aplicar daño con C#?
Crea un script C# llamado «Weapon Damage», asígnalo al arma y detecta al enemigo por su tag. Por ahora, al colisionar, destruye al enemigo. Después podrás ampliar con sistema de vidas y animaciones de ataque.
using UnityEngine;
public class WeaponDamage : MonoBehaviour
{
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.tag.Equals("enemy"))
{
Destroy(collision.gameObject);
}
}
}
- Añade el script al arma y marca su collider como isTrigger.
- Usa la tag "enemy" en los enemigos para identificarlos.
- Llama a Destroy sobre el collision.gameObject al impactar.
¿Cómo organizar el punto de arma en el player?
Para facilitar cambios de arma, crea un punto fijo en la mano del personaje.
- Crea un GameObject hijo del jugador llamado «Weapon».
- Coloca el arma dentro con posición local 0,0,0.
- Mueve el objeto «Weapon» hasta la mano del personaje.
- Así, cambiar de espada, hacha o varita será inmediato.
Habilidades y conceptos aplicados: preparación de sprites con Sprite Editor, control del pivot, ajuste de pixels per unit, gestión de sorting layer y order in layer, elección entre box collider y polygon collider con restricción convexa, uso de isTrigger, lectura de tag en OnTriggerEnter2D, y destrucción con Destroy. Próximo paso natural: sistema de vida del enemigo y animaciones de ataque.
¿Te gustaría que el arma tenga animación de ataque o que el daño dependa del tipo de arma? Cuéntalo en comentarios y seguimos mejorándolo juntos.