W tym kroku utworzysz specjalny cel, po trafieniu którego gracz zdobywa dodatkowy czas. Cel pojawia się losowo po trafieniu celów dających dodatnie punkty, a szansa na jego pojawienie się rośnie do momentu, aż się pojawi.
Modyfikacja wyspy
Wybierz Cel kombo w oknie wizualizacji.
Naciśnij klawisz Alt, następnie kliknij lewym przyciskiem myszy widżet osi i przeciągnij, aby zduplikować cel na przód strzelnicy. To jest cel z bonusowym czasem.
W panelu szczegółów ustaw TargetType na Taniec.
Pisanie kodu Verse
Na tej stronie przedstawiono szczegółowe instrukcje dotyczące zmian w kodzie, ale jeśli chcesz sprawdzić swoją pracę, zapoznaj się z sekcją Kompletny kod, aby zobaczyć ostateczny wynik.
Otwórz plik
shooting_range_manager_device.verse.Dodaj następującą bibliotekę, aby obsługiwać generowanie liczb losowych.
Verseusing { /Verse.org/Random }Dodaj następujące zmienne, aby zapisać odwołanie do urządzenia celu i powiązane właściwości. Czas trwania i zmienne dotyczące nagrody są podane w sekundach.
Verse@editable InitialTimerDuration:float = 30.0 @editable MaxTimerDuration:float = 60.0 @editable BonusTimeTarget:shooting_range_target_track_device = shooting_range_target_track_device{} @editableDodaj metodę wywołania zwrotnego
OnBonusTimeTargetHit, która zwiększa czas na liczniku.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()Zmodyfikuj metodę
OnBegin, aby skonfigurować subskrypcję zdarzenia celu z bonusowym czasem i wyłączyć ją.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)Zmodyfikuj metodę
StartTimer, aby ustawić maksymalny i aktywny czas trwania licznika czasu.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)Zmodyfikuj metodę
AdjustScore, aby losowo wyświetlać cel z bonusowym czasem w oparciu o liczbę trafionych właściwych celów.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.Zapisz i skompiluj kod Verse.
Gotowy kod
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{}
Połączenie wszystkiego w całość
Wybierz shooting_range_manager_device w oknie wizualizacji lub panelu Outliner.
W panelu szczegółów ustaw BonusTimeTarget na cel z bonusowym czasem.
Wypchnij zmiany i przetestuj swoją wyspę.
Sprawdź, czy po trafieniu w cele dające dodatnie punkty czasami pojawia się cel z bonusowym czasem.