> For the complete documentation index, see [llms.txt](https://docs.decentraland.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decentraland.org/contributor/contributor-es/tiempo-de-ejecucion-de-la-escena/basic-components.md).

# Componentes básicos

World Explorer admite una lista de componentes básicos que comparten su definición con las escenas, proporcionando soporte integrado para posicionamiento, animación, medios y consultas del estado del mundo

Hay cinco tipos de componentes:

1. [Componentes de objeto](#object) añaden propiedades visuales y físicas a los Entities.
2. [Componentes de juego](#game) pueden solicitar acciones y recibir información del motor de juego.
3. [Componentes de medios](#media) pueden mostrar imágenes y reproducir sonidos.
4. [Componentes de área](#area) alteran el comportamiento de los Entities en zonas específicas.
5. [Componentes de UI](#ui) permiten que las escenas rendericen interfaces flotantes.

Excepto por [`Transform`](#Transform), que se especifica en detalle a continuación, el estado de todos los componentes se serializa usando protocol buffers. Puedes seguir el enlace en cada título para ver la definición completa.

### Componentes de objeto <a href="#object" id="object"></a>

Los componentes más comunes son aquellos que adjuntan propiedades visuales y físicas a un Entity. Pueden utilizarse para posicionar, redimensionar, pintar y añadir colisión a objetos del juego.

***

**`Transform`** [**↗ spec**](https://adr.decentraland.org/adr/ADR-153)

Añade posición, rotación y escala a un Entity.

Este componente es, con diferencia, el más usado y el que se actualiza con mayor frecuencia durante la vida de una escena. Debido a esto, `Transform` no se serializa usando protocol buffers, y en su lugar se empaqueta en una estructura personalizada.

`Transform` tiene un tamaño de `44` bytes, con esta disposición exacta:

```
.-----------------------.-------------------------------.-----------------------.-----------------.
|   x   |   y   |   z   |   x   |   y   |   z   |   w   |   x   |   y   |   z   | parent (uint32) |
'-----------------------'-------------------------------'-----------------------'-----------------'
╵  position (3x float)  ╵      rotation (4x float)      ╵   scale (3x float)    ╵

```

Este enfoque permite al runtime (especialmente en entornos de código de bajo nivel) evitar pasos intermedios de serialización y deserialización. La memoria donde un `Transform` reside puede copiarse, compartirse y apuntarse directamente.

Las coordenadas pueden ser fraccionarias y, por tanto, usan un número de punto flotante de 4 bytes.

El `parent` indica que este Entity debe posicionarse con respecto a otro, identificado por su ID.

Dado que el valor nulo de `parent` también es el [`RootEntity`](https://github.com/decentraland/docs/tree/main/contributor/runtime/entities/README.md#RootEntity) ID (`0`), cualquier `Transform` es relativo a él por defecto.

Por protocolo, `Transform` debe serializarse en orden de bytes big-endian.

***

**`MeshRenderer`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/mesh_renderer.proto#L7)

Proporciona comportamiento básico de renderizado para un Entity.

Puede configurarse para renderizar un plano, una esfera, un cubo o un cilindro. Para renderizar formas 3D arbitrarias, use [`GltfContainer`](#GltfContainer).

***

**`MeshCollider`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/mesh_collider.proto#L15)

Proporciona comportamiento básico de colisión y detección del puntero del mouse para un Entity.

Puede configurarse para comportarse como un plano, una esfera, un cubo o un cilindro. Para tener una mesh de colisión personalizada, use [`GltfContainer`](#GltfContainer).

***

**`Material`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/material.proto#L19)

Establece las propiedades de textura, iluminación, color y transparencia de un Entity que también tiene el [`MeshRenderer`](#MeshRenderer) componente.

Es una estructura compleja diseñada para cubrir todos los casos comunes, pero cada campo tiene un valor predeterminado razonable y puede dejarse sin especificar.

Para personalizar completamente las propiedades visuales de un Entity, use [`GltfContainer`](#GltfContainer).

***

**`GltfContainer`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/gltf_container.proto#L7)

Adjunta un modelo 3D a este Entity, dada la [ruta del archivo](https://github.com/decentraland/docs/tree/main/contributor/content/entities/README.md#files) de un `.gltf` asset en el manifest de la escena.

Dado que el modelo tiene sus propios meshes y materials, este componente anula cualquier comportamiento de [`MeshRenderer`](#MeshRenderer), [`MeshCollider`](#MeshCollider) y [`Material`](#Material).

***

**`Billboard`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/billboard.proto#L17)

Hace que un Entity reoriente automáticamente su `Transform` para mirar hacia la cámara, o opcionalmente hacia otro Entity referenciado mediante `target_entity`. Como su nombre indica, se usa para mostrar paneles publicitarios dentro del juego y suele combinarse con [`TextShape`](#TextShape).

Afecta a todas las direcciones por defecto, pero puede configurarse para rotar solo en un eje. Si el Entity de destino referenciado no existe, la reorientación se suspende hasta que exista.

***

**`Animator`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/animator.proto#L7)

Define una o más animations que pueden aplicarse simultáneamente a un entity.

Las escenas pueden establecer el estado del componente para personalizar, reproducir y hacer transiciones entre animations, así como leerlo para comprobar qué animations están disponibles o se están reproduciendo actualmente.

***

**`AvatarAttach`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/avatar_attach.proto#L16)

Indica que la posición de un Entity debe seguir un punto de anclaje particular en el cuerpo de un avatar.

Puede afectar a cualquier avatar, no solo al del jugador, estableciendo un user ID.

***

**`TextShape`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/text_shape.proto#L11)

Renderiza texto en la posición de un Entity, dada por su `Transform`.

Es altamente configurable y admite parámetros como tamaño, margen, padding, color, sombra y más.

***

**`Visibility`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/visibility_component.proto#L7)

Establece si un Entity es visible (el valor predeterminado) o invisible.

Los objetos invisibles siguen existiendo y mostrarán el comportamiento de cualquier otro componente adjunto.

***

**`AvatarShape`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/avatar_shape.proto#L8)

Contiene información sobre el avatar del jugador, incluida su forma corporal, colores, Wearables y estado transitorio.

Este componente se adjunta a Entities en la [escena de avatar](https://github.com/decentraland/docs/tree/main/contributor/runtime/execution/README.md#avatarScene).

### Componentes de juego <a href="#game" id="game"></a>

Algunos componentes básicos pueden ser usados por la escena y el runtime para intercambiar información. Aprovechan el [mecanismo de sincronización ECS](https://github.com/decentraland/docs/tree/main/contributor/runtime/modules/engine_api/README.md#synchronization) para garantizar la consistencia y el orden de cualquier cambio de estado o evento.

***

**`CameraMode`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/camera_mode.proto#L8)

Puede usarse para determinar si el jugador tiene una vista en primera persona o en tercera persona.

***

**`PointerLock`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/pointer_lock.proto#L7)

Puede usarse para determinar si el puntero del mouse sigue automáticamente el punto de enfoque de la cámara (bloqueado) o puede moverse libremente por la pantalla (desbloqueado).

Está adjunto al [`CameraEntity`](https://github.com/decentraland/docs/tree/main/contributor/runtime/entities/README.md#CameraEntity), y su estado puede leerse (pero no escribirse) desde la escena.

***

**`PointerEvents`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/pointer_events.proto#L17)

Muestra retroalimentación visual cuando el puntero hace clic o pasa el cursor sobre un Entity.

***

**`PointerEventsResult`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/pointer_events_result.proto#L13)

Contiene información sobre la entrada reciente del jugador, incluidas las teclas y las acciones del puntero.

Está adjunto al `RootEntity`, y actualizado por el runtime con cualquier nuevo evento en cada frame.

***

**`Raycast`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/raycast.proto#L15)

Puede adjuntarse a un Entity para solicitar un raycast al motor de juego. El `RaycastResult` componente se adjuntará más tarde al mismo entity.

Se pueden configurar el origen, la dirección y la longitud máxima del rayo.

***

**`RaycastResult`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/raycast_result.proto#L9)

Adjuntado por el runtime a Entities que tienen un [`Raycast`](#Raycast) componente con resultados pendientes.

Contiene información sobre el rayo original e identifica cualquier Entity que haya sido alcanzado.

### Componentes de medios <a href="#media" id="media"></a>

Las escenas pueden adjuntar componentes especiales para mostrar imágenes, mostrar video o reproducir sonidos.

***

**`AudioSource`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/audio_source.proto#L7)

Reproduce un clip de audio incluido con la escena, dada la [ruta del archivo en su manifest](https://github.com/decentraland/docs/tree/main/contributor/content/entities/README.md#files).

El sonido proviene de la posición del entity asociado. Se pueden configurar su tono, volumen y comportamiento de repetición, y se puede leer el estado del reproductor de audio.

{% hint style="info" %}
En preparación para futuras actualizaciones, el campo en `AudioSource` se llama `audio_clip_url`pero en la versión actual del protocolo en realidad es la ruta definida en el manifest.
{% endhint %}

***

**`AudioStream`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/audio_stream.proto#L7)

Similar a [AudioSource](#AudioSource), pero el audio se transmite en tiempo real desde una URL externa.

A pesar de estar adjunto a un entity en particular, el sonido no se ve afectado por su posición. Se puede configurar su volumen y se puede leer el estado del reproductor de audio.

***

**`NftShape`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/nft_shape.proto#L36)

Muestra un NFT asociado a un asset de imagen o video.

Renderiza un canvas 2D con un marco decorativo configurable.

### Componentes de área

Estos componentes permiten que las escenas modifiquen el comportamiento predeterminado de los Entities dentro de límites especificados.

***

**`AvatarModifierArea`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/avatar_modifier_area.proto#L15)

Cambia el comportamiento de los avatars dentro de un espacio centrado alrededor de un Entity.

Se define con un vector de tamaño 3D y puede afectar a si los avatars son visibles o se puede hacer clic en ellos. Se pueden excluir avatars específicos de este efecto dado el ID de su usuario.

***

**`CameraModeArea`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/camera_mode_area.proto#L11)

Cambia el modo de cámara (primera persona o tercera persona) dentro de un espacio centrado alrededor de un Entity.

Se define con un vector de tamaño 3D y un modo de cámara deseado.

### Componentes de UI <a href="#ui" id="ui"></a>

Los siguientes componentes se usan para crear interfaces gráficas que flotan sobre el mundo del juego.

Normalmente se adjuntan a conjuntos de Entities que tienen componentes UiTransform jerárquicos, relacionados entre sí mediante el [`UiTransform`](#UiTransform) atributo. `parent` Por ejemplo, una ventana flotante de opciones podría ser un Entity con un

Por ejemplo, una ventana flotante de opciones podría ser un Entity con un [`UiTransform`](#UiTransform) y un [`UiBackground`](#UiBackground) componente, además de un Entity con un hijo [`UiTransform`](#UiTransform) y un [`UiDropdown`](#UiDropdown).

***

**`UiTransform`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/ui_transform.proto#L77)

Describe el tamaño, la posición, el margen y el padding de un componente de UI.

Se basa en el modelo flexbox y es altamente personalizable.

***

**`UiBackground`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/ui_background.proto#L11)

Describe un color o textura para usar como fondo en un Entity de UI.

***

**`UiDropdown`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/ui_dropdown.proto#L11)

Define una lista de opciones mutuamente excluyentes para mostrarse en un widget desplegable.

***

**`UiDropdownResult`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/ui_dropdown_result.proto#L9)

Contiene el valor seleccionado de un [`UiDropdown`](#UiDropdown), establecido por el runtime y leído por la escena.

***

**`UiInput`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/ui_input.proto#L11)

Define un widget de entrada de texto, con cierto margen para la personalización.

***

**`UiInputResult`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/ui_input_result.proto#L9)

Contiene el valor de texto de un [`UiInput`](#UiInput), establecido por el runtime y leído por la escena.

***

**`UiText`** [**↗ fuente**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/ui_text.proto#L11)

Define una vista de texto simple, con cierto margen para la personalización.

***


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.decentraland.org/contributor/contributor-es/tiempo-de-ejecucion-de-la-escena/basic-components.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
