AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Andorra 2D Figur von A nach B bewegen
Thema durchsuchen
Ansicht
Themen-Optionen

Andorra 2D Figur von A nach B bewegen

Ein Thema von sabbert · begonnen am 13. Jun 2009 · letzter Beitrag vom 13. Jun 2009
Antwort Antwort
sabbert

Registriert seit: 16. Apr 2008
67 Beiträge
 
#1

Andorra 2D Figur von A nach B bewegen

  Alt 13. Jun 2009, 15:00
Hi,

ich arbeite seit kurzem etwas mit Andorra 2d und hab schon die ersten tutorials dafür durchgearbeitet.

Das tutorial mit der Sprite Engine mit dem Bild mit dem jungen der durch das Bild läuft habe ich gerade fertiggestellt.

Jetzt kommt mir die Frage auf , wie ich das schaffe, dass Die Figur sich von A nach B bewegen kann.

Bis jetzt läuft die ja nur waagerechet, also es wird nur X verändert und bekommt am Ende des Bildschirmrandes eine neue Y

Position.

Jetzt soll sie aber z.B. zur Koordinate(x|y) laufen und dort stehenbleiben.

Daraufhin sich dann erst bei einer neuen Anweisung bewegen.

Jemand eine Idee?

Link zum tutorial:
http://andorra.sourceforge.net/index.php?bb=tutot3ger

Bitte um Antworten

mfg
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Andorra 2D Figur von A nach B bewegen

  Alt 13. Jun 2009, 16:06
Die Logik, die hinter der X-Position steht, musst Du jetzt noch auf die Y-Position übertragen.

Entweder Du läufst immer ein Stück auf der X-Achse, danach auf der Y-Achse, würde halt stottern. Um das Stottern wegzubekommen, brauchst Du etwas Mathematik und den lieben Pythagoras.
  Mit Zitat antworten Zitat
sabbert

Registriert seit: 16. Apr 2008
67 Beiträge
 
#3

Re: Andorra 2D Figur von A nach B bewegen

  Alt 13. Jun 2009, 17:57
ok ist schon etwas

Also habe schon mal ausprobiert das beides zu verbinden aber dann läuft er nur schräg weg, also nicht der gewünschte Effekt
Wie soll das mit Phytagoras funktionieren, kannst du mir das nochmal etwas nähern erklären?

Nochmal etwas genauer was ich will:
Also stellt euch einfach ein Fläche vor die eben ist und ohne Hindernisse, auf der sagen wir ein paar Punkte A,B,C,D...
eingezeichnet sind. Die Figur an Punkt A soll dann gerade zu Punkt B laufen...danach zu Punkt C usw...

Die Bewegungen sind geradlinieg und nicht schräg.

Edit:
Noch eine etwas andere Fragen,
gibt es noch mehrere Seiten auf denen ich mich mehr übre Andorra 2D informieren kann, z.B. Tutorials, ein Forum usw.
Christian
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

Re: Andorra 2D Figur von A nach B bewegen

  Alt 13. Jun 2009, 18:07
Dann würde ich sowas vorschlagen:
Delphi-Quellcode:
// Pos läuft von 0 bis n (n=Anzahl der Punkte)
// Points enthält alle Punkte die auf dem weg liegen sollen
function GetPos(pos: Single; Points: Array of TPoint):TPoint;
var
  a, b: Integer;
  x: Single;
begin
  a := Trunc(pos);
  b := Min(Ceil(pos), high(Points))

  x := frac(pos);

  Result := Points[a] * (1-x) + Points[b] * x;
end;
Das Addieren und multiplizieren von TPoint geht so nicht, aber du weist was ich meine

Das läuft aber umso schneller, je weiter die Punkte entfernt sind ...
  Mit Zitat antworten Zitat
sabbert

Registriert seit: 16. Apr 2008
67 Beiträge
 
#5

Re: Andorra 2D Figur von A nach B bewegen

  Alt 13. Jun 2009, 18:42
Wie funktioniert genau, was bewirkt genau, deine function?
berechnet es die Positionen zwischen den Punkten oder was?
Hab ich noch nicht ganz verstanden was diese bezwecken soll.


Hier die jetzige procedure die für das bewegen zuständig ist:

Delphi-Quellcode:
procedure TFigur.DoMove(TimeGap: double);
begin
  inherited;

  X := X + XSpeed*TimeGap;
  if ((X > Engine.SurfaceRect.Right) and (XSpeed > 0)) or
     ((X < -96) and (XSpeed < 0)) then
  begin
    SetLine;
  end;
end;
Dies ist nur auf das x bezogen.
Für x könnte man ja theoretisch auch Y nehmen.

Sagen wir mal die Figur ist auf Pos(100|100) und soll sich zu Pos(Pos.x|Pos.Y) bewegen.
Das die Figur bewegt klappt ja theoretisch schon nur die Richtung und das Ziel, wo sie stehen bleibt bzw. hingehen soll fehlt.
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Jakob Ullmann
Jakob Ullmann

Registriert seit: 17. Feb 2007
218 Beiträge
 
Lazarus
 
#6

Re: Andorra 2D Figur von A nach B bewegen

  Alt 13. Jun 2009, 21:10
Ich hab mal versucht, das mit dem Pythagoras verständlich zu machen, siehe Anhang. Ich nehme an, daran scheitert es? Oder liegt es daran, eine if-Abfrage zu machen, ob das Ziel überschritten wurde? Evtl. noch mit Verfeinerung, dass nach den Schritt-Berechnungen kontrolliert wird, ob der Schritt nicht zu groß ist, und so entsprechend verkleinert wird.

Das Prinzip ist 1:1 für einen Timer übertragbar, wenn du dagegen eine Dauerschleife benutzt (wonach dein Code aussieht), musst du noch ein wenig anpassen, sollte aber mit einer einfachen Multiplikation / Division gut machbar sein (indem du zum Beispiel / 100 * TimeGap teilst, 100 ggf. anpassen).
Miniaturansicht angehängter Grafiken
dp_hilfe_pythagoras_andorra_299.png  
Jakob
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz