Vector2 vs Vector2i

Vector2

Jest strukturą danych reprezentującą dwuwymiarowy wektor o wartościach zmiennoprzecinkowych. Jest często wykorzystywany do reprezentacji pozycji, prędkości, kierunku lub różnego rodzaju innych danych, które wymagają dwóch współrzędnych (x, y) w przestrzeni 2D.

Składnia:

var vector = Vector2(x, y)

Przykład użycia:

var position = Vector2(10.5, 20.3)  # Tworzy nowy wektor o wartościach x=10.5, y=20.3
var velocity = Vector2(3.0, 4.0)

# Operacje na wektorach
var new_position = position + velocity * delta  # Przykład prostego ruchu

print(new_position)  # Wyświetli nową pozycję po dodaniu prędkości

Kluczowe właściwości i funkcje:

  • x: Wartość współrzędnej w poziomie (float).
  • y: Wartość współrzędnej w pionie (float).

Podstawowe operacje na Vector2:

  1. Dodawanie i odejmowanie wektorów:
   var result = Vector2(3, 4) + Vector2(1, 2)  # Wynik: (4, 6)
  1. Mnożenie i dzielenie przez skalar:
   var result = Vector2(3, 4) * 2  # Wynik: (6, 8)
  1. Długość wektora:
   var length = Vector2(3, 4).length()  # Długość wynosi 5, zgodnie z twierdzeniem Pitagorasa
  1. Normalizowanie wektora (używane, gdy potrzebujemy kierunku bez skali):
   var direction = Vector2(3, 4).normalized()  # Normalizuje wektor do jednostkowego
  1. Interpolacja (płynne przejście między dwoma wektorami):
   var interpolated = Vector2(0, 0).linear_interpolate(Vector2(10, 10), 0.5)  # Wynik: (5, 5)

Zastosowania:

  • Ruch: Vector2 jest powszechnie używany do wyznaczania pozycji i prędkości postaci oraz obiektów w grach 2D.
  • Fizyka: Przydaje się do reprezentowania wektorów sił, prędkości i przyspieszeń.
  • Kierunek: Może być używany do obliczeń związanych z obrotem, np. gdy obiekt ma obracać się w stronę innego punktu.

Przykładowa funkcja, w której Vector2 jest używany do poruszania postaci w zależności od naciśniętych klawiszy:

func _process(delta):
    var velocity = Vector2.ZERO
    if Input.is_action_pressed("ui_right"):
        velocity.x += 1
    if Input.is_action_pressed("ui_left"):
        velocity.x -= 1
    if Input.is_action_pressed("ui_down"):
        velocity.y += 1
    if Input.is_action_pressed("ui_up"):
        velocity.y -= 1

    velocity = velocity.normalized() * SPEED  # Normalizuj i skaluj prędkość
    position += velocity * delta  # Zaktualizuj pozycję

Vector2 jest wszechstronną strukturą w Godot, niezbędną do pracy z grami 2D.

Vector2i

To struktura, która reprezentuje wektor o dwóch wymiarach (x, y) przy użyciu wartości całkowitych (int). Jest używana wszędzie tam, gdzie potrzebne są współrzędne lub wartości związane z pozycją na siatce, ale oparte na liczbach całkowitych, co jest przydatne w sytuacjach, gdzie precyzja zmiennoprzecinkowa nie jest wymagana lub gdy pozycje powinny zawsze być w pełni liczbowe (np. piksele).

Przykład użycia:

var position: Vector2i = Vector2i(10, 15)
print(position)  # Output: (10, 15)

Kluczowe właściwości:

  • x: Pierwsza wartość współrzędnej, liczba całkowita.
  • y: Druga wartość współrzędnej, liczba całkowita.

Zastosowanie:

  • Pozycjonowanie: Można używać Vector2i do precyzyjnego pozycjonowania obiektów w siatkach, gdzie wymagane są liczby całkowite, na przykład przy pracy z pikselami w grafice 2D.
  • Indeksy siatki: Idealnie nadaje się do przechowywania pozycji w dwuwymiarowej siatce (np. mapy kafelkowej).

Przykład w bardziej praktycznym kontekście:

# Definiowanie pozycji na siatce kafelkowej
var grid_position: Vector2i = Vector2i(3, 5)

# Uzyskiwanie wartości
var x = grid_position.x  # 3
var y = grid_position.y  # 5

Vector2i różni się od Vector2, który przechowuje wartości zmiennoprzecinkowe, używane tam, gdzie wymagana jest większa precyzja np. przy animacjach.


Więcej na ten temat:


Komentarze

Dodaj komentarz

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