AGB  ·  Datenschutz  ·  Impressum  







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

Fehler beim Winkelausrechen [erledigt]

Ein Thema von Pyr0cracker · begonnen am 18. Jan 2004 · letzter Beitrag vom 18. Jan 2004
Antwort Antwort
Benutzerbild von Pyr0cracker
Pyr0cracker

Registriert seit: 15. Nov 2002
Ort: Norddeutschland
232 Beiträge
 
Delphi 7 Personal
 
#1

Fehler beim Winkelausrechen [erledigt]

  Alt 18. Jan 2004, 16:01
Hallo!
Ich rechne für einen Zauber im Spiel den Winkel zwischen dem Spieler und der maus aus:
Delphi-Quellcode:
Richtung := arctan(wegdistanz(Maus.MausPunktX, Spieler.Position.Y, maus.MausPunktX*1000,
                              Maus.MausPunktY*1000)
                              /wegdistanz(Maus.MausPunktX, Spieler.Position.Y,
                              Spieler.Position.X, Spieler.Position.Y));

..
  position.X := Position.X + sin(Richtung);
  position.Y := Position.Y - cos(Richtung);
Allerdings fliegt der Zauber in jede richtung, nur nicht in die des mauszeigers...

Was hab ich falsch gemacht?

Gruß,
Dorian Vasco
dorianvasco.de
  Mit Zitat antworten Zitat
Benutzerbild von Seniman
Seniman

Registriert seit: 15. Sep 2003
Ort: Münster
98 Beiträge
 
#2

Re: Fehler beim Winkelausrechen

  Alt 18. Jan 2004, 17:55
Hallo PyroCracker,

wenn du den Winkel zwischen Maus und Spielfigur berechnen willst empfehle ich dir die Funktion
function ArcTan2(const Y, X: Extended): Extended; Damit bekommst du nämlich, wenn du die Entfernung in X- und Y-Richtung angibst, den tatsächlichen Winkel.
Wenn du einfach arctan benutzt, dann gibt es ein Problem: Das Programm kann nicht unterscheiden, ob der Zauber jetzt nach obenlinks oder untenrechts fliegen soll, der Tangens beider Winkel ist nämlich gleich. Deswegen ist arctan2 besser.

Ich halte eine andere Möglichkeit allerdings für noch besser:
Statt den Winkel und danach den Sinus und Kosinus des Winkels auszurechnen, berechne doch einfach gleich den Richtungsvektor des Zaubers.
Angenommen die Figur steht an den Koordinaten (x,y) und die Maus bei (mx,my) dann wären die Geschwindigkeitskomponenten vx und vy des Zaubers so:
Delphi-Quellcode:
vx:= (mx-x)/sqrt(sqr(mx-x)+sqr(my-y));
vy:= (my-y)/sqrt(sqr(mx-x)+sqr(my-y));
Das ganze geht über den Satz von Pythagoras.
Dann sparst du dir auch in jedem Frame den Sinus und Kosinus von dem Winkel auszurechen, sondern addierst einfach nur vx bzw vy.

Grüße
Seniman
  Mit Zitat antworten Zitat
Benutzerbild von Pyr0cracker
Pyr0cracker

Registriert seit: 15. Nov 2002
Ort: Norddeutschland
232 Beiträge
 
Delphi 7 Personal
 
#3

Re: Fehler beim Winkelausrechen

  Alt 18. Jan 2004, 20:40
Super! Das funktioniert.
*puh endlich*

Gruß,
Dorian Vasco
dorianvasco.de
  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 17:59 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