> 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/runtime-de-la-scene/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, media y consultas del estado del mundo

Hay cinco tipos de componentes:

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

Excepto [`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 los que adjuntan propiedades visuales y físicas a un Entity. Se pueden usar para posicionar, redimensionar, pintar y agregar colisión a objetos dentro 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 más frecuencia durante la vida útil 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 este diseño exacto:

```
.-----------------------.-------------------------------.-----------------------.-----------------.
|   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 señalarse directamente.

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

La `parent` indica que este Entity debe posicionarse en relación con otro, identificado por su ID.

Como 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`** [**↗ source**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/mesh_renderer.proto#L7)

Proporciona un 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`** [**↗ source**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/mesh_collider.proto#L15)

Proporciona un 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 malla de colisión personalizada, use [`GltfContainer`](#GltfContainer).

***

**`Material`** [**↗ source**](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`** [**↗ source**](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.

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

***

**`Billboard`** [**↗ source**](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 a la cámara, o opcionalmente a otro Entity referenciado mediante `target_entity`. Como indica el nombre, se usa para mostrar billboards dentro del juego y se combina con frecuencia con [`TextShape`](#TextShape).

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

***

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

Define una o más animaciones que pueden aplicarse simultáneamente a un Entity.

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

***

**`AvatarAttach`** [**↗ source**](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, configurando un ID de usuario.

***

**`TextShape`** [**↗ source**](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`** [**↗ source**](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`** [**↗ source**](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 está adjunto 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 de 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`** [**↗ source**](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 o tercera persona.

***

**`PointerLock`** [**↗ source**](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 a [`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`** [**↗ source**](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 sobre un Entity.

***

**`PointerEventsResult`** [**↗ source**](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 teclas y acciones del puntero.

Está adjunto a `RootEntity`, y se actualiza por el runtime con cualquier evento nuevo en cada frame.

***

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

Puede adjuntarse a un Entity para solicitar un raycast al game engine. El `RaycastResult` component se adjuntará más tarde al mismo entity.

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

***

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

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

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

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

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

***

**`AudioSource`** [**↗ source**](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 se origina en la posición del Entity asociado. Se pueden establecer su tono, volumen y comportamiento de bucle, y se puede leer el estado del reproductor de audio.

{% hint style="info" %}
Como 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`** [**↗ source**](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 particular, el sonido no se ve afectado por su posición. Se puede establecer su volumen y se puede leer el estado del reproductor de audio.

***

**`NftShape`** [**↗ source**](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 a las escenas modificar el comportamiento predeterminado de Entities dentro de límites especificados.

***

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

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

Se define con un vector de tamaño 3D y puede afectar si los avatares son visibles o clicables. Avatares específicos pueden excluirse de este efecto dado el ID de su usuario.

***

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

Cambia el modo de cámara (primera 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.

Por lo general, se adjuntan a conjuntos de Entities que tienen [`UiTransform`](#UiTransform) componentes jerárquicos, relacionados entre sí a través del `parent` atributo.

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

***

**`UiTransform`** [**↗ source**](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`** [**↗ source**](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`** [**↗ source**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/ui_dropdown.proto#L11)

Define una lista de opciones mutuamente excluyentes que se mostrarán en un widget desplegable.

***

**`UiDropdownResult`** [**↗ source**](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`** [**↗ source**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/ui_input.proto#L11)

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

***

**`UiInputResult`** [**↗ source**](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`** [**↗ source**](https://github.com/decentraland/protocol/blob/ccb88d679f20c0e22840c324879d7b2535f6c9a6/proto/decentraland/sdk/components/ui_text.proto#L11)

Define una vista de texto simple, con algo de margen para 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.decentraland.org/contributor/contributor-es/runtime-de-la-scene/basic-components.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
