PathFollow3D

in polish •  19 days ago 

PathFollow3D to węzeł w Godot, który pozwala na poruszanie obiektu wzdłuż ścieżki w przestrzeni 3D. Węzeł ten działa w połączeniu z węzłem Path3D, który przechowuje trajektorię (krzywą), po której obiekt będzie się przemieszczał.

Główne zastosowania PathFollow3D:

  • Ruch po ścieżce: Używany do poruszania obiektów (np. rakiet, kamer, postaci) wzdłuż zdefiniowanej krzywej.
  • Animacje: Może być używany do animowania obiektów w określony sposób, np. ruchu wzdłuż toru.
  • Płynne śledzenie obiektów: W połączeniu z dynamiczną modyfikacją krzywej, może służyć do tworzenia systemów śledzenia (np. dla pocisków lub NPC-ów).

Przykład użycia:

extends Node3D

@onready var path_follow = $Path3D/PathFollow3D
var speed = 5.0 # Prędkość ruchu obiektu

func _process(delta):
# Zwiększ przesunięcie wzdłuż ścieżki na podstawie prędkości
path_follow.offset += speed * delta

# Można użyć parametru loop, aby poruszanie było ciągłe po zamkniętej ścieżce
if path_follow.offset > path_follow.path_length:
    path_follow.offset = 0  # Restartuj ruch od początku ścieżki</code></pre>

Ważne właściwości PathFollow3D:

  1. offset: Kontroluje, jak daleko wzdłuż ścieżki obiekt się porusza. Zwiększanie wartości tego parametru przesuwa obiekt wzdłuż krzywej.
  2. unit_offset: Normalizowana wersja offsetu, gdzie 0 oznacza początek ścieżki, a 1 jej koniec.
  3. loop: Jeśli włączone, obiekt będzie poruszał się w pętli po zamkniętej ścieżce.
  4. rotate: Jeśli włączone, obiekt będzie obracany wzdłuż trajektorii, co jest przydatne do zachowania orientacji wzdłuż zakrętów krzywej.

Przykładowe zastosowanie w symulacji rakiet:

Aby wykorzystać PathFollow3D do śledzenia dynamicznie zmieniającego się celu, można dynamicznie aktualizować ścieżkę Path3D na podstawie ruchu celu, a następnie przesuwać rakietę po tej trajektorii.

Dynamiczne śledzenie celu:

func update_target_position(new_target_position):
    # Wyczyszczenie punktów i dodanie nowego celu
    var path = $Path3D.curve
    path.clear_points()
    path.add_point(global_transform.origin)  # Pozycja startowa rakiety
    path.add_point(new_target_position)  # Dynamicznie zmieniany cel

W ten sposób możesz dynamicznie zmieniać trasę rakiety, by dostosowywała się do zmieniającego się celu, a dzięki PathFollow3D rakieta będzie poruszała się płynnie po zaktualizowanej ścieżce.

Dodatkowe wskazówki:

  • offset oraz unit_offset umożliwiają kontrolowanie, jak daleko obiekt jest przesunięty wzdłuż ścieżki.
  • rotate zapewnia, że rakieta zachowa odpowiednią orientację względem ścieżki.

Published using WordPress Blurt Publisher from https://godot.com.pl.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE BLURT!