Plataformas que aparecem e desaparecem periodicamente são essenciais para modos de jogo de plataforma, como pistas de obstáculos. Elas exigem que os jogadores sincronizem seus saltos para alcançar a próxima plataforma. Se errarem, cairão e terão que começar de novo.
Este exemplo mostra como criar uma plataforma que desaparece usando um componente criado em Verse e gráfico de cena. Compare essa situação com a implementação do dispositivo de autoria em Verse com o mesmo conceito em Plataforma que desaparece em looping.
Como fazer plataformas desaparecerem
Siga as etapas abaixo para criar uma plataforma que desaparece usando gráfico de cena:
Adicione uma entidade à sua cena chamada DisappearingPlatform. Consulte Como trabalhar com entidades e componentes para saber mais sobre como adicionar entidades e componentes à cena.
Adicione mesh_component à sua entidade de plataforma que desaparece e defina a malha como cube.
Crie um novo componente Verse chamado
disappear_on_loop_component, adicione o componente à entidade da sua plataforma que desaparece e salve a entidade. Para saber como criar seu próprio componente, consulte Como criar seu próprio componente usando Verse.Abra
disappear_on_loop_componentno VS Code para editá-lo como mostrado nas etapas a seguir.Adicione uma propriedade
floateditável ao componente chamadoDuration. Isso determina por quanto tempo a plataforma deve ser exibida antes de ser ocultada e por quanto tempo fica assim até reaparecer.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 uma plataforma, você pode tornar sua malha estática invisível desativando a colisão para que um jogador não possa aterrissar na plataforma. Adicione uma nova função que se estenda da
entidadechamadaHide()até sua classedisappear_on_loop_component. Dentro dessa função, chameGetComponents[]com o tipo que você está procurando, neste casomesh_component, retornando a malha estática da entidade. Em seguida, chameDisable()na malha 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()Adicione outra função de extensão de
entidadechamadaShow()à classedisappear_on_loop_component. A implementação é a mesma queHide(), mas você chamaráEnable()nos componentes de malha 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, em
OnSimulate(), use uma expressãolooppara ocultar o loop e mostrar a plataforma, chamandoSleep()todas as vezes. A classedisappear_on_loop_componentcompleta deve ficar assim: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):Salve e compile seu código.
No Organizador do UEFN, promova sua entidade DisappearingPlatform a uma estrutura pré-fabricada chamada disappearing_platform_prefab. No caso de uma estrutura pré-fabricada, você pode criar mais instâncias da sua plataforma que desaparece e atualizar a aparência e a implementação-base de todas elas se forem necessárias para mais tarde. Para ver como promover entidades a uma estrutura pré-fabricada, consulte Estruturas pré-fabricadas e instâncias de estruturas pré-fabricadas.
Script completo
Aqui está o código completo usado nesta seção:
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):