Eliptischer Abstand

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Eliptischer Abstand

    Ich habe zu dem Thema explizit noch nichts gefunden und bin leider zu schlecht in Mathe um es selbst heraus zu finden...

    Mein Projekt soll eine Art Stragtegie/Rollenspiel in 2,5D Optik (Pseudo 3D) werden.

    ich habe zwei Opjekte, deren Abstand zueinander ermittelt werden soll um die Angriffsreichweite meines Charakters zu prüfen.
    Ich will aber mein Spielfeld nicht in der Vogelperspektive darstellen, sondern ein wenig horizontal gestreckt (bzw. vertikal gequetscht).
    daher fällt die einfache Variante flach.

    Bisher habe ich die Vogelperspektive benutzt, das war einfach.

    GML-Quellcode

    1. if point_distance(x, y, target.x, target.y) < range{
    2. attackable = true
    3. }

    Damit habe ich dann aber bei der Horizontalstreckung auf der Y-Achse eine höhere Reichweite. Das soll nicht so sein.
    Wie setze ich das mit einem variablen Faktor um, damit ich egal bei welcher Perspektive die gleiche Reichweite habe?

    Ich dachte da an eine Elipse. Allerdings gibt es die Funktion "point_in_elipse" in der form nicht in GML.

    Hat jemand ne Idee?
  • Mein Ansatz wäre hier, dass man das Koordinatensystem so lässt, wie es ist. So kannst du alle Funktionen des Gamemakers normal Benutzen. Und eben anstelle das Koordinatensystem vertikal zu quetschen, könnte man alles Visuelle einfach gequetscht darstellen lassen. Ein eigenes Drawscript würde hier bestens helfen. Das Script müsste die Y-Koordinate einfach z.B. durch 2 teilen.

    Das könnte irgendwie so aussehen:

    scr_draw_sprite_special(sprite_index, image_index, x, y, amount);

    GML-Quellcode

    1. var yy = argument2/argument4;
    2. draw_sprite(argument0,argument1,argument2,yy);
    PUTREFACTION ////
    ◇ ALIEN BASTARDS ◇ SLY PITCH ◇ SHOVE MASTER ◇