Wbudowane klasy – Engine

W Godot, Engine to wbudowana globalna klasa, która zapewnia dostęp do funkcji związanych z silnikiem gry. Pozwala m.in. na manipulowanie podstawowymi ustawieniami silnika, takimi jak współczynnik czasu, który wpływa na całą grę. Oznacza to, że za pomocą Engine możesz kontrolować niektóre globalne aspekty silnika, takie jak prędkość gry, obsługa platform, stan debugowania itp.

Przykłady użycia:

  1. Engine.time_scale: Zmienia tempo czasu w grze. Wartość domyślna to 1.0 (normalna prędkość gry).
  • Engine.time_scale = 2.0 przyspiesza grę dwukrotnie.
  • Engine.time_scale = 0.5 zwalnia grę o połowę.
  1. Engine.target_fps: Pozwala ustawić docelową liczbę klatek na sekundę.
  • Engine.target_fps = 60 ustawia docelową liczbę klatek na 60 FPS.
  1. Engine.get_version_info(): Zwraca informacje o wersji silnika w postaci słownika, np. wersję Godot i inne szczegóły techniczne.
  2. Engine.exit(): Używane do zamknięcia gry lub aplikacji.

Przykład kodu:

# Sprawia, że czas gry płynie dwukrotnie szybciej
Engine.time_scale = 2.0

# Ograniczenie liczby klatek na sekundę do 60
Engine.target_fps = 60

# Wyświetlanie informacji o wersji silnika
var version_info = Engine.get_version_info()
print("Godot Version: ", version_info["string"])

Dzięki Engine, masz globalny dostęp do ustawień i funkcji zarządzających silnikiem gry w całym projekcie.

Funkcja Engine.time_scale może być używana w wielu miejscach w grze, w zależności od tego, kiedy i jak chcesz zmieniać tempo gry. Oto kilka przykładów, gdzie zastosowanie tej funkcji ma sens:

1. W menu gry:

  • Możesz dodać opcję w ustawieniach gry, która pozwala graczowi zmieniać tempo rozgrywki. To może być przydatne np. w grach strategicznych, symulacyjnych lub treningowych, gdzie gracz może chcieć przyspieszyć lub spowolnić akcję. Przykład w skrypcie menu:
   func _on_time_scale_slider_value_changed(value):
       Engine.time_scale = value

W tym przypadku, funkcja zostanie podpięta do suwaka w menu, co pozwoli dynamicznie regulować prędkość gry.

2. Podczas pauzowania gry:

  • Zamiast całkowicie zatrzymywać grę, możesz ustawić Engine.time_scale na 0, co zatrzyma wszystkie procesy związane z upływem czasu, ale wciąż pozwoli na wyświetlanie animacji GUI, np. w menu pauzy. Przykład w skrypcie pauzy:
   func _on_pause_button_pressed():
       if Engine.time_scale == 1:
           Engine.time_scale = 0  # Pauza
       else:
           Engine.time_scale = 1  # Wznowienie gry

3. W dynamicznych sytuacjach w grze:

  • Slow motion (spowolnienie czasu) podczas specjalnych akcji, np. w trakcie wybuchów, strzałów, czy widowiskowych momentów w grze. Użycie tego w mechanice może dać efekt kinowy i przyciągnąć uwagę gracza. Przykład w trakcie akcji:
   func trigger_slow_motion():
       Engine.time_scale = 0.2  # Zastosowanie slow motion
       yield(get_tree().create_timer(1), "timeout")  # Czekaj 1 sekundę
       Engine.time_scale = 1  # Przywrócenie normalnego tempa

4. Tryby debugowania:

  • Możesz tymczasowo spowolnić grę, aby analizować działanie mechanizmów, AI, lub fizyki w wolniejszym tempie. Przykład:
   func _on_debug_slow_motion():
       if Engine.time_scale == 1:
           Engine.time_scale = 0.1  # Spowolnienie gry dla debugowania
       else:
           Engine.time_scale = 1  # Przywrócenie normalnej prędkości

Podsumowanie

Najlepszym miejscem na zastosowanie funkcji Engine.time_scale jest sytuacja, w której chcesz zmienić globalną prędkość działania gry – czy to w trakcie dynamicznej rozgrywki, czy w menu gry. Możesz ją podpiąć do elementów GUI, takich jak suwaki lub przyciski, albo zmieniać czas w kodzie na podstawie działań gracza lub mechanik gry (np. pauza, slow motion).


Komentarze

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *