Nesta etapa, você criará um alvo especial que concede tempo extra quando alguém o acerta. O alvo aparece aleatoriamente ao atingir alvos com pontuação positiva, e as chances de ele aparecer aumentam até que ele apareça.
Modifique sua ilha
Selecione o alvo de combo na janela de visualização.
Pressione a tecla ALT, clique com o botão esquerdo no widget do eixo e arraste um alvo duplicado para a frente do seu estande de tiro. Este é o alvo de tempo bônus.
No painel Detalhes, defina TargetType como Dançando.
Escreva o código Verse
Esta página apresenta um passo a passo sobre as alterações no código, mas se quiser verificar seu trabalho, revise a seção Código Completo para ver o resultado final.
Abra o arquivo
shooting_range_manager_device.verse.Adicione a seguinte biblioteca para dar suporte à geração de números aleatórios.
Verseusing { /Verse.org/Random }Adicione as seguintes variáveis para armazenar a referência do dispositivo de alvo e as propriedades relacionadas. As variáveis de duração de tempo e recompensa estão em segundos.
Verse@editable InitialTimerDuration:float = 30.0 @editable MaxTimerDuration:float = 60.0 @editable BonusTimeTarget:shooting_range_target_track_device = shooting_range_target_track_device{} @editableAdicione o método de retorno de chamada
OnBonusTimeTargetHitque aumenta o temporizador.Verse# A hit callback that adds bonus time and disables the BonusTimeTarget. OnBonusTimeTargetHit():void= CurrentDuration:float = Timer.GetActiveDuration() Timer.SetActiveDuration(CurrentDuration + BonusTimeReward) BonusTimeTarget.PopDown() BonusTimeTarget.Disable()Modifique o método
OnBeginpara configurar a assinatura do evento de alvo de tempo bônus e desabilitá-lo.Verse# Runs when the device is started in a running game. OnBegin<override>()<suspends>:void= # Subscribing to the GoodTarget HitEvents. GoodTarget1.HitEvent.Subscribe(OnGoodTarget1Hit) GoodTarget2.HitEvent.Subscribe(OnGoodTarget2Hit) GoodTarget3.HitEvent.Subscribe(OnGoodTarget3Hit) # Subscribing to the BadTarget HitEvents. BadTarget1.HitEvent.Subscribe(OnBadTarget1Hit) BadTarget2.HitEvent.Subscribe(OnBadTarget2Hit)Modifique o método
StartTimerpara definir as durações máxima e ativa do temporizador.Verse# Setup and start the timer. StartTimer():void= # Set the event subscription to call OnTimerSuccess when the timer finishes. Timer.SuccessEvent.Subscribe(OnTimerSuccess) <# --- New Code Start --- #> # Set the max and active duration based on the set property values. Timer.SetMaxDuration(MaxTimerDuration) Timer.SetActiveDuration(InitialTimerDuration)Modifique o método
AdjustScorepara fazer com que o alvo de tempo bônus apareça aleatoriamente com base na quantidade alvos bons acertados.Verse# Adjusts the player's score by the provided value. AdjustScore(Value:int):void= # Start the timer if it hasn't started yet. if (not IsTimerStarted?): StartTimer() # Sets the score award to the base value of the target. ScoreManager.SetScoreAward(Value) # Gets the first player in the playspace.Salve e compile seu código Verse.
Código completo
using { /Fortnite.com/Devices }
using { /Verse.org/Random }
using { /Verse.org/Simulation }
# A device that manages shooting range gameplay.
shooting_range_manager_device := class(creative_device):
@editable
ScoreManager:score_manager_device = score_manager_device{}
Reunindo as partes
Selecione shooting_range_manager_device na janela de visualização ou no painel Organizador.
No painel Detalhes, defina BonusTimeTarget como o alvo de tempo bônus.
Envie suas alterações e teste sua ilha.
Verifique se o alvo de tempo bônus aparece ocasionalmente após atirar em alvos com pontuação positiva.