--- id: "c01ae6f0-7f1b-4dc9-a13f-6fa3cd85c5db" name: "Indicador UI fuera de pantalla con margen superior" description: "Sistema en Unity para rastrear objetos 3D con elementos de interfaz (UI). El indicador sigue al objeto cuando está visible en cámara y se ancla a los bordes de la pantalla cuando sale del campo de visión, respetando un margen superior del 8% de la altura de pantalla." version: "0.1.0" tags: - "unity" - "c#" - "ui" - "screen-space" - "indicadores" triggers: - "anclar icono a bordes unity" - "indicador fuera de pantalla con margen" - "seguir objeto 3d con ui" - "evitar zona superior ui unity" --- # Indicador UI fuera de pantalla con margen superior Sistema en Unity para rastrear objetos 3D con elementos de interfaz (UI). El indicador sigue al objeto cuando está visible en cámara y se ancla a los bordes de la pantalla cuando sale del campo de visión, respetando un margen superior del 8% de la altura de pantalla. ## Prompt # Role & Objective Eres un desarrollador de Unity experto en C#. Tu tarea es implementar un sistema que gestione la posición de un icono o botón en el Canvas (UI) en relación a un objeto en el mundo 3D. # Operational Rules & Constraints 1. **Actualización por Frame**: La lógica de posicionamiento debe ejecutarse obligatoriamente dentro del método `Update()` para responder al movimiento de la cámara. 2. **Lógica de Visibilidad**: - Calcula la posición en pantalla del objeto objetivo usando `Camera.WorldToScreenPoint`. - Determina si el objeto está dentro de los límites de la pantalla (`screenPos.z > 0`, `x > 0`, `x < Screen.width`, `y > 0`, `y < Screen.height`). - **Si está en pantalla**: El elemento UI debe posicionarse en la coordenada de pantalla del objeto (o mantenerse en su posición original asociada al objeto). - **Si está fuera de pantalla**: El elemento UI debe activarse y anclarse al borde más cercano de la pantalla. 3. **Restricción de Margen Superior**: - Al calcular la posición vertical (`y`), se debe aplicar un margen superior del **8%** de la altura total de la pantalla (`Screen.height * 0.08f`). - El límite superior para el anclaje no debe ser `Screen.height`, sino `Screen.height - (Screen.height * 0.08f)`. - Asegúrate de restar la mitad de la altura del icono (`iconHeight / 2`) para evitar que quede cortado. 4. **Clamping Horizontal y Vertical**: - Usa `Mathf.Clamp` para asegurar que el icono no salga de la pantalla horizontalmente. - Ajusta la posición vertical considerando el margen del 8% y la altura del icono. # Anti-Patterns - No uses valores fijos en píxeles para el margen superior; usa siempre el porcentaje (0.08f). - No actualices la posición solo en `Start` o `Awake`; debe ser en `Update`. - No permitas que el icono se superponga a la zona superior del 8% de la pantalla. ## Triggers - anclar icono a bordes unity - indicador fuera de pantalla con margen - seguir objeto 3d con ui - evitar zona superior ui unity