Hallo Leute,
Ich bin's wieder und diesmal bin ich echt hilflos.
Ich bin immernoch bei meinem Spiel und möchte jetzt versuchen die selektierten Einheiten mithilfe eines A*-Algorithmus zum Zielpunkt zu bewegen.
Das Spielfeld sieht so aus:
Dabei sind die grünen Einheiten die selektierten.
Die Bewegung funktionierte bis jetzt nur entweder per Pfeiltasten, oder Hindernisse missachtend so:
Diese Methode wird in einer Schleife immer wieder aufgerufen.
Ich möchte jetzt die Vektoren der Units mit einem vernünftigen Pathfinder Algorithmus bestimmen.
Die Felder haben folgende Variablen:
Die Flaechen diese:
Und die Units:
Ich habe mal alle Variablen auf public gestellt, damit ich die ganzen passenden Methoden nicht noch auflisten muss.
Ich habe mal überlegt, wie ich das anstellen könnte, aber irgendwie bin ich auf nichts schlaues gekommen, denn selbst wenn ich für alle Felder immer wieder Bewegungskosten ausrechnen ließe, was schon ziemlich viel Speicher beanspruchen würde, müsste ich mir immernoch einfallen lassen, wie ich den Weg definiere und die Einheiten in der Bewegen Methode nicht immer wieder direkt zum Ziel schicke.
Könnt ihr mir da helfen?
Ich bin's wieder und diesmal bin ich echt hilflos.
Ich bin immernoch bei meinem Spiel und möchte jetzt versuchen die selektierten Einheiten mithilfe eines A*-Algorithmus zum Zielpunkt zu bewegen.
Das Spielfeld sieht so aus:
Dabei sind die grünen Einheiten die selektierten.
Die Bewegung funktionierte bis jetzt nur entweder per Pfeiltasten, oder Hindernisse missachtend so:
Java:
public void bewegen (Unit u) {
double groesster = u.vektorrechts;
if (u.vektorlinks>groesster) {groesster = u.vektorlinks;}
if (u.vektorunten>groesster) {groesster = u.vektorunten;}
if (u.vektoroben>groesster) {groesster = u.vektoroben;}
if (groesster != 0) {
double rechtsmove = 0;
double linksmove = 0;
double obenmove = 0;
double untenmove = 0;
rechtsmove = u.vektorrechts/groesster*u.speed;
linksmove = u.vektorlinks/groesster*u.speed;
untenmove = u.vektorunten/groesster*u.speed;
obenmove = u.vektoroben/groesster*u.speed;
u.pos.x+=rechtsmove;
u.pos.x-=linksmove;
u.pos.y+=untenmove;
u.pos.y-=obenmove;
u.vektorlinks-=linksmove;
u.vektorrechts-=rechtsmove;
u.vektorunten-=untenmove;
u.vektoroben-=obenmove;
}
}
Ich möchte jetzt die Vektoren der Units mit einem vernünftigen Pathfinder Algorithmus bestimmen.
Die Felder haben folgende Variablen:
Java:
public Flaeche flaeche;
public boolean voll;
public String name;
public Image skin;
public String typ;
Java:
public int xPos, yPos, breite, hoehe;
public String name, callback;
Java:
public String name, callback;
public double xPos, yPos, width, height, speed, hp, armor, ap, vektoroben, vektorunten, vektorrechts, vektorlinks;
public boolean attackable, killable, selected;
public int playerID;
public Flaeche flaeche;
Ich habe mal überlegt, wie ich das anstellen könnte, aber irgendwie bin ich auf nichts schlaues gekommen, denn selbst wenn ich für alle Felder immer wieder Bewegungskosten ausrechnen ließe, was schon ziemlich viel Speicher beanspruchen würde, müsste ich mir immernoch einfallen lassen, wie ich den Weg definiere und die Einheiten in der Bewegen Methode nicht immer wieder direkt zum Ziel schicke.
Könnt ihr mir da helfen?