AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zielsuchende Objekte

Ein Thema von Dunkelbunt27 · begonnen am 10. Aug 2010 · letzter Beitrag vom 12. Aug 2010
 
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Zielsuchende Objekte

  Alt 10. Aug 2010, 20:43
Du brauchst erstmal die Richtung, in die sich die Schiffe bewegen sollen - sozusagen einen "Pfeil" der in Richtung der Mitte zeigt (man munkelt Fachleute sollen hier auch von einem "Vektor" sprechen). Diesen Vektor bekommst du ganz einfach:
Delphi-Quellcode:
var
  vx, vy: Double;
begin
  vx := MitteX - MitteSchiffX;
  vy := MitteY - MitteSchiffY;
end;
Nun ist dieser Vektor jedoch für unterschiedliche Schiffe unterschiedlich lang (vergleiche Ecke oben links mit mitte links außen). Du musst den Vektor also normalisieren. Dazu brauchen wir erstmal die Länge des Vektors (entspricht dem Abstand zu Mitte), die einfach mit dem Satz des Pythagoras ausgerechnet werden kann:
Delphi-Quellcode:
var
  laenge: double;
begin
  laenge := sqrt(sqr(vx) + sqr(vy));
  vx := vx / laenge;
  vy := vy / laenge;
end;
Nun kannst du in einem Timer die Schiffe n Schritte an den Pfeil entlangwandern lassen, wobei n die Geschwindigkeit ist (in diesem Fall 10px pro Timerintervall):
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  schiffx := round(schiffx + vx * 10);
  schiffy := round(schiffy + vy * 10);
end;
Um die Schiffe nich miteinander Kollidieren zu lassen musst du auch hier den Abstand zwischen den Schiffen ausrechnen und entsprechend reagieren. Um die Schiffe einige Pixel vor der Mitte zu stoppen, musst du den Abstand zur Mitte berechnen und wenn dieser einen gewissen Wert hat stoppen.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein

Geändert von igel457 (10. Aug 2010 um 20:46 Uhr)
  Mit Zitat antworten Zitat
 


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 19:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz