🎮 UnityDocs

Trail Renderer y Line Renderer

Dos componentes para dibujar líneas y estelas: el Trail Renderer para rastros que siguen a un objeto (espadas, proyectiles) y el Line Renderer para líneas explícitas (láseres, cuerdas, la parábola de un salto). Ajustes clave y rendimiento.

📄 ArtículoIntermedio✅ RevisadoUnity 6.0 LTSActualizado 2026-07-17
DificultadConceptual Código Matemáticas
Tiempo📖 Lectura 7 min · ⌨️ Práctica 15 min

Dos formas de dibujar líneas#

  • Trail Renderer: deja una estela detrás de un objeto en movimiento (la cola de un cohete, el corte de una espada, un dash). Tú mueves el objeto; el rastro se genera solo.
  • Line Renderer: dibuja una línea entre puntos que tú defines (un láser, una cuerda, la trayectoria de un proyectil, una zona de peligro).

Ambos usan un material y una curva de anchura/color a lo largo de la línea.

Trail Renderer: estelas#

Añádelo al objeto que se mueve. Ajustes clave:

  • Time: cuántos segundos vive cada tramo de la estela (más = cola más larga).
  • Width: curva de grosor del principio (pegado al objeto) al final (desvanecido).
  • Color: gradiente, normalmente con el alpha bajando a 0 al final para que se difumine.
  • Material: un material additive o unlit suele dar el look de energía.
C#
using UnityEngine;

[RequireComponent(typeof(TrailRenderer))]
public class EstelaDash : MonoBehaviour
{
    private TrailRenderer trail;
    void Awake() => trail = GetComponent<TrailRenderer>();

    // Enciende la estela solo durante el dash
    public void Dash(bool activo) => trail.emitting = activo;
}
Estela solo cuando importa

Deja emitting = false y actívala en el momento clave (dash, golpe). Una estela siempre encendida se ve sucia y cuesta más. También puedes trail.Clear() para borrarla de golpe (útil al teletransportar, o el rastro cruzará la pantalla).

Line Renderer: líneas explícitas#

Le das los puntos y dibuja la línea:

C#
using UnityEngine;

[RequireComponent(typeof(LineRenderer))]
public class Laser : MonoBehaviour
{
    [SerializeField] private float alcance = 20f;
    private LineRenderer line;
    void Awake() { line = GetComponent<LineRenderer>(); line.positionCount = 2; }

    void Update()
    {
        Vector3 origen = transform.position;
        Vector3 fin = origen + transform.forward * alcance;

        // Si el láser choca, acorta hasta el impacto
        if (Physics.Raycast(origen, transform.forward, out RaycastHit hit, alcance))
            fin = hit.point;

        line.SetPosition(0, origen);
        line.SetPosition(1, fin);
    }
}

Para una trayectoria curva (la parábola de una granada), sube positionCount a muchos puntos y ve calculando cada posición con las matemáticas del movimiento.

¿En el mundo o en la UI?

El Line Renderer vive en el mundo 3D (proyectiles, láseres). Para líneas en la interfaz (conectar nodos en un menú), no uses Line Renderer: usa soluciones de UI. Y para el espacio local (una cuerda pegada al objeto), activa Use World Space = false.

Rendimiento#

Muchos puntos y estelas cuestan

Cada Trail/Line Renderer genera geometría cada fotograma. Decenas de láseres con cientos de puntos, o estelas con Time alto sobre muchos objetos, suman draw calls y triángulos. Limita positionCount, reutilízalos con object pooling y apaga las estelas cuando no se ven. Ver reducir draw calls.

Errores frecuentes#

  • Estela siempre encendida (se ve sucia y cuesta): actívala en el momento y usa Clear() al teletransportar.
  • Line Renderer con material en magenta: shader incompatible con URP.
  • Olvidar fijar positionCount antes de SetPosition (no aparece nada).
  • Usar Line Renderer para UI (vive en el mundo, no en el Canvas).
  • Curvas con muchísimos puntos por fotograma sin necesidad (coste inútil).

Ponte a prueba#

📝 Pon a prueba lo aprendido

Resumen#

El Trail Renderer deja estelas tras un objeto en movimiento (espadas, dashes, cohetes): controla Time, Width y color, y enciéndelo (emitting) solo cuando toca. El Line Renderer dibuja líneas entre puntos que defines (láseres, cuerdas, trayectorias): fija positionCount y coloca las posiciones, acortando con un raycast si choca. Ambos generan geometría cada fotograma: vigila los puntos y el número de instancias. Para efectos más ricos, combínalos con el Particle System.

Fuentes y para profundizar