# Smart Items - Avanzado

La mayoría de los smart items tienen un módulo básico donde puedes configurar solo los ajustes más comunes de forma sencilla, pero puedes desplazarte hacia abajo más allá del **Advanced** para personalizar casi cualquier aspecto de cómo se comporta el item.

{% embed url="<https://www.youtube.com/watch?v=m_xWCSDDxpQ>" %}

El siguiente item tiene un componente Transform y un módulo básico que expone solo los campos básicos para configurar un button. Pero si te desplazas hacia abajo más allá del **Advanced** marcador, encontrarás todos los ajustes disponibles.

![](/files/29f93bd36720894ee66ad20cc1bd52b08586cee2)

{% hint style="info" %}
**📔 Nota**: La mayoría de los ajustes del módulo básico también están disponibles en los componentes más abajo. Los cambios realizados en el módulo básico se reflejan en los componentes más abajo y viceversa, excepto en algunos casos en los que los ajustes básicos son una abstracción de varios ajustes más abajo. En esos casos, cambiar los ajustes avanzados a valores que no son compatibles con el módulo básico hará que el campo del módulo básico se marque como undefined.
{% endhint %}

## Configuración avanzada

Las propiedades se agrupan en [**components**](/creator/content-creator-es/scenes-sdk7/arquitectura/entities-components.md). Los distintos smart items pueden tener diferentes components, según su funcionalidad.

El comportamiento de la mayoría de los items está controlado por:

* [**Actions**](#actions): El componente Actions define cosas que el item puede hacer. Por ejemplo, reproducir un sonido, reproducir una animación, moverse hacia arriba o volverse invisible.
* [**Triggers**](#triggers): El componente Triggers asigna qué eventos hacen que ocurran esas actions. Por ejemplo, cuando el player hace click en el item, cuando el player entra en un área o cuando la scene se carga por primera vez.

Por ejemplo, en un smart item de una puerta, el **Actions** componente incluye las actions "Open" y "Close". El **Triggers** componente de ese item incluye un **On Click** trigger que activa la action "Open" cuando el player hace click en la puerta.

Los triggers de un smart item pueden activar actions en cualquier smart item de la scene, no solo en ese mismo smart item. Por ejemplo, un smart item de button puede tener un **Triggers** componente que activa la action "move up" definida en el **Actions** componente de una plataforma flotante.

Los triggers también pueden ocurrir de forma condicional. Por ejemplo, los smart items de puerta incluyen dos **On Click** triggers en su componente Triggers: uno abre la puerta si esa puerta estaba cerrada, el otro cierra la puerta si estaba abierta. Para más detalles, consulta [Estados y lógica condicional](/creator/content-creator-es/scene-editor/interactividad/states-and-conditions.md).

## Interacciones entre items

Para hacer que los items interactúen entre sí:

* Un item necesita tener al menos una action definida en un [Actions](#actions) componente.
* El otro item necesita un trigger en el [Triggers](#triggers) componente que apunte a esa action.

Por ejemplo, para hacer que un button abra una puerta:

1. Añade cualquier smart item de button, abre su **Triggers** componente. Tiene un evento trigger predeterminado que reproduce un sonido y una animación para el button en sí.
2. Haz click en el **+** signo junto a **Assigned Actions**, para añadir una tercera action en ese mismo evento trigger.
3. Selecciona el smart item de la puerta en el primer dropdown.
4. En el segundo dropdown, selecciona la action "Open".

![](/files/17e634a2e7d95d8b343150d15b74f60c02e9b222)

{% hint style="info" %}
**💡 Consejo**: En su lugar, puedes crear un nuevo evento Trigger que solo gestione la action de la puerta. Ambos eventos trigger se ejecutan cada vez que se hace click en el button.

<img src="/files/5bc8432d70f00e9b4b68d6b4dc0fddd2d7f220bf" alt="" data-size="original">
{% endhint %}

Cualquier item puede activar cualquier action de cualquier otro item, siempre que la action esté definida. Consulta [Triggers](#triggers) para ver más formas en las que se puede activar una action.

Puedes usar [estados y lógica condicional](/creator/content-creator-es/scene-editor/interactividad/states-and-conditions.md) para activar una action solo si se cumple una condición. La condición incluso puede comprobar el estado de un tercer smart item. Por ejemplo, un button solo abre la puerta si el smart item personalizado "power generator" tiene su estado establecido en "On".

## Actions

El **Actions** El componente lista las actions que el item puede realizar. Cada smart item incluye un conjunto de actions predefinidas. Puedes personalizar actions existentes o añadir nuevas. Los siguientes tipos de actions están disponibles:

* **Play Animation**: Reproduce una animación en el modelo 3D del item. Consulta [Sobre reproducir animaciones](#about-playing-animations)
* **Stop Animation**: Detiene todas las animaciones que se están reproduciendo en el modelo 3D del item.
* **Play Sound**: Reproduce un sonido desde un archivo, en la ubicación del item. Consulta [Sobre reproducir sonidos](#about-playing-sounds)
* **Stop Sound**: Detiene todos los sonidos que se estén reproduciendo desde el item.
* **Start Tween**: Realiza un cambio gradual de posición, rotación o escala durante un periodo determinado. Consulta [Mover, rotar o escalar](#moving-rotating-or-scaling).
* **Set Visibility**: Hace que el item sea visible o invisible.
* **Attach To Player**: Establece el item como hijo del avatar del player. Por ejemplo, para llevarlo en la mano o sobre la cabeza.
* **Detach From Player**: Desvincula el item del avatar del player.
* **Open Link**: Abre un link a un sitio web externo.

{% hint style="info" %}
**📔 Nota**: Esta action solo puede ocurrir como resultado de hacer click en un item. No puede activarse al entrar caminando en un trigger area.
{% endhint %}

* **Move Player**: Cambia la posición del player a un conjunto de coordenadas locales dentro de la scene. Solo es posible mover al player dentro de la misma scene.
* **Teleport Player**: Teletransporta a un player a las coordenadas de otra scene en Decentraland. Los players aparecerán en el spawn-point de la scene de destino.
* **Move Player**: Cambia la posición del player a otra posición dentro de la misma scene, usando coordenadas relativas al origen de la scene.
* **Play Emote**: Hace que el avatar del player realice una de las animaciones predeterminadas del avatar (p. ej.: saludar o aplaudir).
* **Play Custom Emote**: Hace que el avatar del player realice una animación personalizada, desde un archivo subido a la scene.
* **Show Text**: Muestra texto en la UI de la pantalla, para ocultarlo después de unos segundos. Ideal para hints, líneas de diálogo, notificaciones, etc.
* **Hide Text**: Oculta cualquier texto de UI que se esté mostrando actualmente.
* **Start Delay**: Retrasa otra action del mismo item tantos segundos como necesites.
* **Stop Delay**: Cancela cualquier action retrasada en el item.
* **Start Loop**: Repite recurrentemente una action del mismo item a un intervalo determinado.
* **Stop Loop**: Cancela cualquier action en bucle del item.
* **Play Video Stream**: Reproduce un video como material sobre una forma primitiva.
* **Stop Video Stream**: Detiene cualquier video que se esté reproduciendo actualmente.
* **Play Audio Stream**: Reproduce un stream de audio.
* **Stop Audio Stream**: Detiene cualquier stream de audio que se esté reproduciendo actualmente.
* **Open link**: Abre un link en una pestaña del navegador. Se pregunta a los players si confían en el dominio antes de hacerlo.
* **Clone**: Duplica un item en la posición designada.
* **Remove**: Elimina un item de la scene.
* **Show Image**: Muestra una imagen en la UI, potencialmente durante un tiempo limitado. También puede incluir subtítulo.
* **Hide Image**: Oculta cualquier imagen que se esté mostrando actualmente en la UI mediante la action Show Image.
* **Damage**: Reduce la salud de cualquier healthbar cercana. La *Layer* propiedad puede determinar si solo actúa sobre healthbars del player o de otros items.
* **Move player here**: Cambia la posición del player a la de este item.
* **Place on Player**: Cambia la posición del item a la del player.
* **Rotate as Player**: Cambia la rotación del item a la del player.
* **Place on Camera**: Cambia la posición del item a la de la cámara.
* **Rotate as Camera**: Cambia la rotación del item a la de la cámara.
* **Set Position**: Cambia la posición del item a una específica. Puede ser absoluta o relativa a su posición actual.
* **Set Rotation**: Cambia la rotación del item a una específica. Puede ser absoluta o relativa a su rotación actual.
* **Set Scale**: Cambia la escala del item a una específica. Puede ser absoluta o relativa a su escala actual.
* **Follow Player**: Empieza a moverse y girar en dirección a la posición del player. Ignora cualquier obstáculo en el camino. Puedes establecer la velocidad y hacer que solo se mueva en ciertos ejes. Min Distance determina lo cerca que llegará al player.
* **Stop Following Player**: Detiene la action Follow Player.
* **Random Action**: Una de las actions enumeradas aquí se reproducirá al azar con igual probabilidad cada vez que se invoque la random action. Puedes listar cualquiera de las actions que pertenecen al item.
* **Batch Actions**: Todas las actions enumeradas aquí se reproducirán simultáneamente cada vez que se invoque la batch action. Puedes listar cualquiera de las actions que pertenecen al item.
* **Heal Player**: Restaura salud a la health bar del player.

Consulta [estados y lógica condicional](/creator/content-creator-es/scene-editor/interactividad/states-and-conditions.md) para aprender sobre otras actions relacionadas con condiciones lógicas.

El **Actions** componente define actions posibles, pero estas no hacen nada en la scene a menos que se activen. Las actions se activan mediante un [trigger](#triggers), ya sea del mismo smart item o de uno diferente.

Para añadir una nueva action a un item, haz click en el **Add New Action** button en la parte inferior del componente Action. Luego dale un nombre a la action, selecciona un tipo y completa cualquier campo adicional específico del tipo de action.

![](/files/5b99159212da5489de8429458f9acf1a49a666a4)

### Triggers

El **Triggers** componente define eventos trigger; estos activan actions cuando ocurre un cierto evento. Existen los siguientes tipos de eventos trigger:

* **On Click**: Cuando el player hace click en el item. Consulta [Sobre triggers de click](#about-click-triggers)
* **Player Enters Area**: Cuando el player entra en un area. Consulta [Sobre trigger areas](#about-trigger-areas)
* **Player Leaves Area**: Cuando el player sale de un area. Consulta [Sobre trigger areas](#about-trigger-areas)
* **On Spawn**: Cuando la scene empieza, o el item aparece en la scene. Consulta [Trigger on spawn](#trigger-on-spawn)

Consulta [estados y lógica condicional](/creator/content-creator-es/scene-editor/interactividad/states-and-conditions.md) para aprender sobre otros triggers relacionados con condiciones lógicas.

Para añadir un nuevo trigger, haz click en **Add New Trigger Event** en la parte inferior del componente Trigger. Luego selecciona el tipo de trigger, la Entity que quieres activar y una action de esa Entity.

![](/files/f2c64b89f6b43407a9d43da745b0ce3a3046409c)

{% hint style="info" %}
**📔 Nota**: Una action necesita estar definida en el [Actions](#actions) componente de la Entity antes de que puedas activarla. Los triggers solo pueden afectar a Entities que tengan un componente Actions.
{% endhint %}

## Sobre reproducir animaciones

Usa una action de tipo **Play Animation** para ejecutar una animación en el modelo 3D del smart item. La animación ya debe existir como parte del archivo del modelo 3D. El **Select Animation** dropdown muestra una lista de todas las animaciones disponibles en el modelo 3D.

El **Play Mode** campo te permite seleccionar si una animación debe reproducirse solo una vez o si debe seguir en bucle.

![](/files/cb24b800a9b74d9910dbf2dd47d38c0a7782abc9)

Una vez creada la action, puedes activarla mediante el [Triggers](#triggers) componente de ese mismo item o de cualquier otro item.

Usa la **Stop Animation** action para detener todas las animaciones del item, tanto en bucle como sin bucle.

{% hint style="info" %}
**💡 Consejo**: Para comprobar fácilmente el contenido de un modelo 3D, ver qué animaciones incluye y cómo se ven, una buena herramienta es el [Babylon Sandbox](https://sandbox.babylonjs.com/). Solo arrastra el archivo del modelo 3D a la ventana. Debería aparecer en la parte inferior un dropdown con una lista de sus animaciones.
{% endhint %}

Para aprender más sobre las animaciones y cómo puedes crear las tuyas como parte de un modelo 3D, consulta [Animations](https://github.com/decentraland/docs/blob/main/creator/scene-editor/3d-modeling/animations.md).

## Sobre reproducir sonidos

Usa una action de tipo **Play Sound** para reproducir un archivo de sonido. Puedes reproducir cualquier archivo de sonido siempre que esté importado al proyecto de la scene. El sonido se escucha de forma posicional, desde la ubicación del item, lo que significa que suena más fuerte si el player está más cerca.

{% hint style="info" %}
**💡 Consejo**: En lugar de escribir la ruta del archivo de sonido, puedes arrastrarlo al **Path** campo desde el menú de navegación de archivos en la parte inferior del Scene Editor.
{% endhint %}

Usa la **Play Mode** campo para elegir si reproducir el sonido una vez o ponerlo en bucle de forma continua.

![](/files/d1f5e8e814771981d14335e39633ec943b24b439)

Una vez creada la action, puedes activarla mediante el [Triggers](#triggers) componente de ese mismo item o de cualquier otro item.

Usa la **Stop Sound** action para detener todos los sonidos del item, tanto en bucle como sin bucle. Esto también detiene los sonidos del **AudioSource** componente.

Para hacer que un item reproduzca siempre un sonido en bucle, por ejemplo para ambiente o música, es más fácil usar el **AudioSource** componente, en lugar de usar Actions y Triggers. Este componente solo requiere que proporciones una ruta a un archivo y marques las casillas **Start Playing** y **Loop**.

![](/files/dc0360514fb7cb2b4e574b3c454ecddda7f2f22d)

{% hint style="info" %}
**📔 Nota**: Un smart item solo puede reproducir un sonido a la vez. Llamar a un segundo sonido interrumpirá cualquier otro sonido que se esté reproduciendo actualmente. Esto también se aplica a los sonidos del **AudioSource** componente. Si necesitas que dos sonidos suenen al mismo tiempo, considera añadir una Entity invisible en la misma ubicación para alojar una **Play Sound** action.
{% endhint %}

Consulta [sounds](/creator/content-creator-es/scenes-sdk7/esenciales-de-contenido-3d/sounds.md) para saber más sobre la reproducción de sonidos en Decentraland.

## Mover, rotar o escalar

Usa una **Start Tween** action para cambiar la **posición**, **escala**, o **rotación**, del item durante un periodo de tiempo. Todas las actions **Start Tween** empiezan desde el estado original del item y cambian a un estado final durante un periodo de tiempo.

Los tweens de posición pueden ser relativos o absolutos. Un tween absoluto de posición mueve el item a una posición fija en relación con la scene. El item se moverá desde donde esté hasta esa posición. Si ya está allí, no parecerá moverse. Un tween relativo de posición mueve el item una cierta distancia desde donde está ahora; por ejemplo, un tween a una posición relativa de `1, 0, 0` mueve el item 1 metro hacia adelante, en la dirección en la que está mirando actualmente. Si ejecutas la action tween una segunda vez, el item se moverá otro metro hacia adelante.

Los tweens de rotación también pueden ser relativos o absolutos. Una rotación relativa se añade a la rotación actual del item. Un tween absoluto de rotación hará que el item mire hacia una dirección específica, en relación con la scene.

Usa la **Duration** campo para establecer cuánto tiempo debe durar todo el movimiento, en segundos. Ten en cuenta que el control deslizante llega hasta 100 segundos, pero también puedes escribir manualmente un número mayor si lo necesitas.

![](/files/0920f90646357dd4a87c3301016ba0082b8aecee)

Una vez creada la action, puedes activarla mediante el [Triggers](#triggers) componente de ese mismo item o de cualquier otro item.

Los tweens pueden seguir distintos **Curve Types** que afectan la velocidad del cambio a lo largo del tiempo. Una curva **linear** (predeterminada) significa que la velocidad del cambio es constante de principio a fin. Hay muchas opciones para elegir, que dibujan curvas de distinta forma según si el comienzo y/o el final empiezan despacio, y cuánto. Una curva **easeinexpo** empieza despacio y termina rápido, aumentando la velocidad exponencialmente; por el contrario, una curva **easeoutexpo** empieza rápido y termina despacio.

![](/files/292da5206bb5990d34633bd943a6049568a86104)

{% hint style="info" %}
**💡 Consejo**: Experimenta con diferentes curvas de movimiento. Las diferencias suelen ser sutiles, pero interpretamos de forma subconsciente la información que transmiten los movimientos, como el peso, la fricción o incluso la personalidad.
{% endhint %}

Usa **On Tween End** eventos trigger en el **Triggers** componente para activar una action después de que un tween haya terminado. Usa [estados y lógica condicional](/creator/content-creator-es/scene-editor/interactividad/states-and-conditions.md) para describir una ruta en bucle para una plataforma flotante, de modo que se mueva constantemente entre dos ubicaciones.

Cuando un item realiza un tween, esto afecta a todo el item. Por ejemplo, si cambia de escala, cambia la escala de su modelo 3D visible y también la geometría del collider invisible, el tamaño del texto, etc. Si el item tiene hijos (anidados en el entity tree de la izquierda), estas entities hijas también se ven afectadas por el tween.

{% hint style="info" %}
**📔 Nota**: Cada Entity solo puede realizar un tween a la vez. Por ejemplo, no puedes hacer que un item se mueva lateralmente y también rote al mismo tiempo. Como solución, puedes usar entities con parent. Por ejemplo, puedes tener una Entity padre invisible que se mueva lateralmente, con un hijo visible que rote.
{% endhint %}

## Sobre triggers de click

Para activar una action haciendo click en un item, crea un **On Click** trigger. La action se activará cada vez que el player haga click en la Entity.

![](/files/2ff8afcc714d713dc136339f41641d4c8e7f99e5)

Consulta [Haz cualquier item smart](/creator/content-creator-es/scene-editor/interactividad/make-any-item-smart.md#interactivity) para más detalles.

{% hint style="info" %}
**📔 Nota**: Cuando se usan modelos 3D personalizados, el modelo debe tener una geometría de collider invisible para que se pueda hacer click sobre él. Consulta [colliders](/creator/content-creator-es/scenes-sdk7/esenciales-de-contenido-3d/colliders.md#pointer-blocking).

Como alternativa, puedes configurar el **GLTF** componente del item, de modo que su **Visible Layer** de colisión esté establecido en **Pointer**.

Otra alternativa es añadir un smart item **Click Area** , para dibujar un cubo que se superponga al item en el que quieres hacer click. El smart item Click Area es un [item invisible](#invisible-items).
{% endhint %}

## Trigger on spawn

Los triggers de tipo **On Spawn** activan una action cuando la scene se carga. En lugar de esperar a que el player interactúe con un item, la action se ejecuta de inmediato.

Por ejemplo, úsalo para hacer que una plataforma se mueva continuamente. Usa un **On Spawn** trigger para activar una action tween. Luego usa **On State Change** triggers para mantenerla moviéndose entre dos o más posiciones.

![](/files/ec2821e861b4dfae785a0098dbcb82d092b13737)

## Multiplayer

Todos los smart items son multiplayer por defecto. Consulta [Smart Items - Basic](/creator/content-creator-es/scene-editor/interactividad/smart-items.md) para más detalles.

Puedes cambiar o ajustar este comportamiento multiplayer para sincronizar solo ciertos components del item.

En el **Multiplayer** componente del item, marca las casillas de los components que quieras compartir.

Por ejemplo, una puerta comparte su `Animator` para que todos vean las animaciones de apertura, su `AudioSource` para que todos oigan su sonido, y su `State` para que todos lleven registro de si está abierta o cerrada en ese momento. La puerta no comparte su `Visibility` componente, porque la puerta normalmente siempre es visible. Si incluyes actions para activar y desactivar su visibilidad, quizá también quieras marcar este componente para que los cambios se sincronicen entre todos los players.

## Items invisibles

Algunos items no están pensados para ser vistos por el player, pero son visibles mientras editas tu scene para que sea más fácil gestionarlos. Este es el caso de items como **Ambience**, **Trigger Area**, **Click Area**, etc.

En el modo avanzado, estos items tienen un **Visibility** componente establecido en invisible. Este componente no afecta la visibilidad de los items en el Scene Editor, pero cualquier item establecido como invisible no es visto por los players al ejecutar una preview.

## Ver también

* [Smart items - Basics](/creator/content-creator-es/scene-editor/interactividad/smart-items.md)
* [Estados y condiciones](/creator/content-creator-es/scene-editor/interactividad/states-and-conditions.md)
* [Hacer cualquier item smart](/creator/content-creator-es/scene-editor/interactividad/make-any-item-smart.md)
* [Combinar con código](/creator/content-creator-es/scene-editor/extender-con-codigo/overview.md)


---

# Agent Instructions: 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:

```
GET https://docs.decentraland.org/creator/content-creator-es/scene-editor/interactividad/smart-items-advanced.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
