Dowiedz się, jak dodać nieprzewidywalny element do swojej rozgrywki.
Podczas tworzenia gier elementy losowości i nieprzewidywalności mogą znacznie wpłynąć na ogólne wrażenia z rozgrywki. Jednym ze szczególnych sposobów wprowadzenia takiego elementu są losowo poruszające się obiekty, które dodają dodatkową warstwę interakcji i wyzwania.
Jeśli pracujesz z Godotem, możesz osiągnąć ten efekt za pomocą GDScript, natywnego języka skryptowego Godota.
Konfigurowanie gry Godot
Przed rozpoczęciem skonfiguruj podstawową scenę gry 2D w silnik gry Godota. Utwórz nową scenę 2D i dodaj CharakterBody2D węzeł dla postaci gracza. The CharakterBody2D węzeł jest głównym elementem reprezentującym postacie, które mogą się poruszać i wchodzić w interakcje z otoczeniem.
Kod użyty w tym artykule jest dostępny w this Repozytorium GitHub i jest darmowy do użytku na licencji MIT.
Dodaj dwa węzły potomne do postaci gracza: a KolizjaKształt2D o kształcie prostokąta, a Sprite2D do graficznej reprezentacji gracza.
Aby dodać mobilność postaci, możesz użyć następującego kodu GDScript:
extends CharacterBody2D
var speed = 200
func _physics_process(delta):
var velocity = Vector2()if Input.is_action_pressed('ui_right'):
velocity.x += 1if Input.is_action_pressed('ui_left'):
velocity.x -= 1if Input.is_action_pressed('ui_down'):
velocity.y += 1if Input.is_action_pressed('ui_up'):
velocity.y -= 1
velocity = velocity.normalized() * speed
move_and_collide(velocity * delta)
Zdefiniuj zmienną, prędkość, za prędkość ruchu twojego gracza. The _proces_fizyczny (delta) Funkcja steruje ruchem postaci w odpowiedzi na polecenia gracza. Normalizuj prędkość i kierunek postaci, aby zapewnić stały ruch niezależnie od kierunku.
Tworzenie obiektów statycznych za pomocą StaticBody2D
Następnie stwórz obiekty, z którymi twój gracz może wchodzić w interakcje. Poniższy przykład demonstruje tworzenie obiektu statycznego przy użyciu StaticBody2D węzeł:
extends StaticBody2D
func _ready():
var collision_shape = CollisionShape2D.new()
collision_shape.shape = RectangleShape2D.new()
add_child(collision_shape)
Dodanie algorytmu losowego ruchu dla obiektów statycznych
Teraz, gdy obiekty statyczne są gotowe, nadszedł czas, aby dodać losowość do gry. Aby to zrobić, możesz użyć prostego algorytmu ruchu losowego:
extends StaticBody2D
var speed = 100
var value = randf_range(-1, 1)
var direction = Vector2(value, value).normalized()
func _physics_process(delta):
position += direction * speed * delta
Zdefiniuj prędkość swojego obiektu statycznego. Utwórz również kierunek Vector2 i zainicjuj go losowymi wartościami między -1 a 1 dla obu osi.
w _proces_fizyczny (delta) funkcja, zwiększa położenie obiektu o iloczyn jego kierunku, prędkości i delty czasu, powodując, że porusza się on w kierunku z zadaną prędkością.
Losowe pozycje i trajektorie obiektów statycznych
Możesz zwiększyć losowość i nieprzewidywalność, nie tylko zmieniając prędkość i kierunek obiektów, ale także ich początkowe pozycje i trajektorie.
extends StaticBody2D
var speed = randf_range(50, 150)
var value = randf_range(-1, 1)
var direction = Vector2(value, value).normalized()func _ready():
var val1 = randf_range(0, get_viewport().size.x)
var val2 = randf_range(0, get_viewport().size.y)
position = Vector2(val1, val2)
func _physics_process(delta):
position += direction * speed * delta
Tutaj prędkość jest losową wartością z przedziału od 50 do 150. Początkowa pozycja obiektu jest określana losowo w ramach rozmiaru rzutni w pliku _gotowy() funkcja, a pozycja obiektu jest aktualizowana w pliku _proces_fizyczny (delta) funkcjonować tak jak wcześniej.
Dostosowanie prędkości, kierunku i przypadkowości
Możesz zaprojektować bardziej interaktywną i wciągającą rozgrywkę, manipulując prędkością, kierunkiem i losowością ruchu obiektów statycznych. Możesz utworzyć te kontrolki za pomocą GDScript:
extends StaticBody2D
var speed = randf_range(50, 150)
var value = randf_range(-1, 1)
var direction = Vector2(value, value).normalized()
var speed_variation_rate = 0.5
var direction_variation_rate = 0.5func _ready():
var val1 = randf_range(0, get_viewport().size.x)
var val2 = randf_range(0, get_viewport().size.y)
position = Vector2(val1, val2)func _physics_process(delta):
randomize_speed_and_direction()
position += direction * speed * deltafunc randomize_speed_and_direction():
if randf() < speed_variation_rate:
speed = randf_range(50, 150)
if randf() < direction_variation_rate:
direction = Vector2(value, value).normalized()
Dodatkowe funkcje dla twoich losowo poruszających się obiektów
Podczas gdy podstawowy losowy ruch dodaje nieprzewidywalnej dynamiki do twojej gry, istnieje niezliczona ilość dodatkowych funkcji, które możesz dodać, aby jeszcze bardziej ulepszyć swoją grę. Niektóre przykłady obejmują:
Wariacja kolorów
Podobnie jak w przypadku losowego ustalania prędkości i kierunku obiektów, można również losowo ustalać ich kolory. Może to dodać bardziej żywego i atrakcyjnego wizualnie aspektu do twojej gry. Możesz to zrobić, zmieniając tzw modulować własność duszka.
sprite.modulate = Color(randf(), randf(), randf())
Zmiana rozmiaru
Losowa zmiana rozmiaru obiektów dodaje kolejny poziom trudności i nieprzewidywalności. Gracze będą musieli stale dostosowywać się do zmieniających się rozmiarów obiektów. Możesz zmienić rozmiar obiektu, dostosowując jego rozmiar skala nieruchomość:
sprite.scale = Vector2(randf_range(0.5, 2.0), randf_range(0.5, 2.0))
Spawnowanie obiektów
Zamiast mieć stałą liczbę losowo poruszających się obiektów, można wdrożyć system, który tworzy nowe obiekty w regularnych odstępach czasu lub w określonych warunkach. Może to dodać nowy poziom trudności, ponieważ gracz będzie musiał dostosować swoją strategię, gdy na ekranie pojawi się więcej obiektów.
Żywotność obiektu
Oprócz tworzenia nowych obiektów, możesz także automatycznie niszczyć obiekty po pewnym czasie. Może to zapobiec nadmiernemu zagraceniu ekranu i zachować świeżość rozgrywki.
Interakcje
Pomyśl o dodaniu określonych interakcji między graczem a poruszającymi się obiektami. Na przykład zderzenie z pewnymi obiektami może zwiększyć wynik gracza, zmienić jego prędkość, a nawet zmienić środowisko gry. Możesz również pozwolić graczowi skakać gdy stoisz na platformie.
Najlepsze praktyki dodawania losowo poruszających się obiektów
Podczas dodawania losowo poruszających się obiektów ważne jest, aby wziąć pod uwagę kilka najlepszych praktyk, aby zapewnić dobrze wyważoną, wciągającą grę:
Rozważania dotyczące wydajności
Chociaż kuszące jest dodanie jak największej liczby obiektów, należy pamiętać, że każdy obiekt zwiększa obciążenie obliczeniowe silnika gry. Zawsze testuj swoją grę na docelowym sprzęcie, aby upewnić się, że nie wpłynie to negatywnie na wydajność.
Równoważenie losowości i grywalności
Podczas gdy przypadkowe obiekty mogą dodać zabawnej nieprzewidywalności, zbyt duża losowość może prowadzić do frustracji. Pamiętaj, aby dokładnie przetestować, aby znaleźć właściwą równowagę między wyzwaniem a przyjemnością.
Kolizje i odpowiedź
Upewnij się, że gra odpowiednio obsługuje kolizje między graczem a obiektami. Losowo poruszające się obiekty mogą powodować nieoczekiwane scenariusze kolizji, więc zaplanuj je i dokładnie przetestuj.
Przejrzystość wizualna
Losowo poruszające się obiekty powinny wyróżniać się z tła i innych nieinteraktywnych elementów. Pomaga to graczom szybko zrozumieć sytuację w grze i odpowiednio zaplanować swoje działania. Możesz również dodać efekty dźwiękowe do przedmiotów, aby je wyróżnić.
Wpływ losowo poruszających się obiektów na twoją grę Godot
Losowo poruszające się obiekty mogą znacząco przyczynić się do uatrakcyjnienia gry Godot. Wprowadzają element nieprzewidywalności, który trzyma graczy w napięciu. Za każdym razem, gdy gracz rozpocznie grę, powita go inna konfiguracja obiektów, co zwiększy jej powtarzalność.
Co więcej, ponieważ gracze nie mogą przewidzieć ścieżki poruszających się obiektów, muszą zachować koncentrację i szybkość reakcji, aby poruszać się po środowisku gry