Las plataformas que aparecen y desaparecen periódicamente constituyen un elemento básico de los modos de juego de plataformas, como las carreras de obstáculos. Los jugadores tienen que calcular con precisión el momento en el que saltan para llegar a la siguiente plataforma. Si fallan, se caerán y tendrán que volver a empezar.
Este ejemplo muestra cómo crear una plataforma que desaparece utilizando Scene Graph y un componente creado con Verse. Compáralo con la implementación del mismo concepto en el dispositivo de verse en Plataforma que desaparece en bucle.
Cómo hacer desaparecer las plataformas
Sigue estos pasos para crear una plataforma que desaparezca utilizando Scene Graph:
Añade una entidad a tu escena con el nombre DisappearingPlatform. Consulta Cómo trabajar con entidades y componentes para obtener más información sobre cómo añadir entidades y componentes a tu escena.
Añade el componente mesh_component a la entidad de plataforma que desaparece, y establece la malla en cube.
Crea un nuevo componente de Verse denominado
disappear_on_loop_component, añádelo a la entidad de plataforma que desaparece y guarda la entidad. Para aprender a crear tu propio componente, consulta Cómo crear tu propio componente con Verse.Abre el componente
disappear_on_loop_componenten VS Code para editarlo en los siguientes pasos.Añade una propiedad
floateditable al componente denominadoDuration. Determina cuánto tiempo debe mostrarse la plataforma antes de ocultarse y durante cuánto tiempo se oculta antes de volver a aparecer.Verseusing { /Verse.org } using { /Verse.org/Native } using { /Verse.org/Simulation } using { /Verse.org/SceneGraph } # Loops between hiding and showing the entity by enabling and disabling # its static mesh and collision components. disappear_on_loop_component := class(component):Para ocultar una plataforma, haz invisible su malla estática desactivando la colisión para que el jugador no pueda aterrizar en la plataforma. Añade una nueva función que se extienda desde la
entitydenominadaHide()a tu clasedisappear_on_loop_component. Dentro de esta función, llama aGetComponents[]con el tipo que estás buscando, en este casomesh_component, y devuelve la malla estática de la entidad. Luego llama aDisable()en la malla estática.Verse# If the entity has a mesh or collision component, disable them. (Entity:entity).Hide():void= if: StaticMesh := Entity.GetComponent[mesh_component] then: StaticMesh.Disable()Añade otra función de extensión de la
entidaddenominadaShow()a tu clasedisappear_on_loop_component. La implementación es la misma queHide(), pero en su lugar llamarás aEnable()en los componentes de malla estática.Verse# If the entity has a mesh or collision component, enable them. (Entity:entity).Show():void= if: StaticMesh := Entity.GetComponent[mesh_component] then: StaticMesh.Enable()Por último, en
OnSimulate(), utiliza una expresiónlooppara ocultar y mostrar en bucle la plataforma, llamando aSleep()cada vez. Tu clasedisappear_on_loop_componentcompleta debería tener el siguiente aspecto:Verseusing { /Verse.org } using { /Verse.org/Native } using { /Verse.org/Simulation } using { /Verse.org/SceneGraph } # Loops between hiding and showing the entity by enabling and disabling # its static mesh and collision components. disappear_on_loop_component := class<final_super>(component):Guarda y compila tu código.
En el esquematizador de UEFN, asciende tu entidad DisappearingPlatform a un prefabricado denominado disappearing_platform_prefab. Como prefabricado, puedes crear más instancias de tu plataforma que desaparece y actualizar el aspecto y la implementación base de todas ellas si lo necesitas más adelante. Para saber cómo ascender entidades a un prefabricado, consulta Prefabricados e instancias de prefabricados.
Secuencia de comandos completa
A continuación encontrarás el código completo utilizado en esta sección:
disappear_on_loop_component.verse
using { /Verse.org }
using { /Verse.org/Native }
using { /Verse.org/Simulation }
using { /Verse.org/SceneGraph }
# Loops between hiding and showing the entity by enabling and disabling
# its static mesh and collision components.
disappear_on_loop_component := class<final_super>(component):