und sehe grade ich habe da einen kleinen denkfehler drin, werd ich mir heute abend dann nochmal anschauen, und berichtigen, aber mit der steigung an sich müsstest du das genauste ergebnis hinbekommen, nur eben noch an die gegebenheiten des makers anpassen.
@Grandy
Ja, ich hab mich auch schon gefragt, ob es überhaupt nötig ist ganz exakt zu sein. Vielleicht reicht es auch, wenn man gar nicht mit Pixeln, sondern nur mit den Tiles rechnet. Und zwar so:
- man startet entweder mit dem Tile des Spielers oder des Zieles
- dann addiert man die x- und y-Steigung in Tiles, aber nicht auf einen Schlag, sondern man legt quasi eine Bewegungsliste an. Eine Steigung von 3/1 wird z. B. zu [x+1, x+1, x+1, y+1]. Nach jedem Schritt testet man, ob dort ein Hindernis ist oder das Ziel erreicht wurde. Ich hab hier jetzt immer nur +1 geschrieben, aber je nach Lage müsste man natürlich gegebenenfalls subtrahieren.
Keine Ahnung, ob das wirklich funktioniert und wie genau das ist, aber so müsste es sich relativ leicht umsetzen lassen.
also aus meiner erfahrung kann ich sagen, das es wesentlich mehr sinn macht, genau zu berechnen, und ne ungenauigkeit per parameter angeben zu lassen, wie schon ungenau zu programmieren. eine kugel fliegt nicht um ecken, und das sollte sie auch nicht in einem game (meine meinung zumindest), deswegen sollte die gerade schon recht exakt berechnet werden, wie weit man dann aber in der berechnung vom eigentlichen zielpunkt abweicht, ist dann eine andere sache.
Kelven: Ich hab mir zwar noch nicht die Zeit genommen, mir das genauer anzuschauen, aber in der Theorie überspringst du praktisch Tiles, die dein Projektil aber passiert. Bei einer Steigung von 3 würde ausgehend vom Mittelpunkt bei Start/Zeil deine Gerade folgende Tiles treffen auf ihrer Flugbahn
Die Gerade würde genau zwischen 0/1 und 1/2 auf der Ecke in die zweite Zeile rutschen. Bei deiner Überprüfung wie du sie anwenden würdest würdest du prüfen:
In dem Fall fliegt deine Kugel wie anti-freak schrieb, um Ecken.
Du müsstest tatsächlich irgendwie versuchen eine gerade Linie zu berechnen - auf welche Methode auch immer, ob per Skript oder Events (ich persönlich würd da zu ner Skriptlösung tendieren, aber das liegt daran dass ich damit besser arbeiten kann als mit Events) - und zu testen, welche Tiles die schneidet. (auch wenn ich grad Befürchte, dass dieser Absatz nicht mehr ist , als schon gesagt wurde bisher ~.~, sorry!)