FloatToInt problem (a^2+b^2=c^2)

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Skyhawk
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 77
Registriert: 27.04.2004, 19:40
Kontaktdaten:

FloatToInt problem (a^2+b^2=c^2)

Beitrag von Skyhawk »

Hi

Ich will die entfernung zwischen zwei charakteren berechnen lassen
und das kann ich ja auch mit Pyhtagoras erledigen....
Ich hab da an

Maths.Sqrt((Maths.RaiseToPower(character[TEST].x - character[EGO].x,2))+ (Maths.RaiseToPower(character[TEST].y - character[EGO].y,2)));

gedacht.
Zu beachten hab ich natürlich die jeweiligen positionen der charaktere,
da sich dann x1 und x2 bzw y1 y2 vertauschen...

nur bekomm ich jetzt ständig fehlermeldungen beim komplilieren
(logisch) nur bekomm ich das mit den FloatToInt IntToFloat usw einfach nicht geregelt....
je älter ich werde, desto weniger verstehe ich....

http://www.tafkasomm.de
strazer

Beitrag von strazer »

(Floats sind ein neues Feature von AGS 2.7)

Mach's zum Beispiel so:

Code: Alles auswählen

  int a = character[TEST].x - character[EGO].x;
  int b = character[TEST].y - character[EGO].y;
  int c = FloatToInt(Maths.Sqrt(IntToFloat(a*a) + IntToFloat(b*b)));
Zu beachten hab ich natürlich die jeweiligen positionen der charaktere,
da sich dann x1 und x2 bzw y1 y2 vertauschen...
Nicht unbedingt. Wenn du eine negative Zahl mit sich selbst multiplizierst, wird sie wieder positiv (- mal - gibt +). Das obige sollte funktionieren, egal welcher Charakter auf der anderen Seite von dem anderen steht.
Benutzeravatar
Skyhawk
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 77
Registriert: 27.04.2004, 19:40
Kontaktdaten:

Beitrag von Skyhawk »

danke dafür...

hab schon verzweifelt nach ner Betrags-funktion gesucht, aber so isses noch besser :D

(jaja, die einfachen Sachen übersieht man doch als erstes)
je älter ich werde, desto weniger verstehe ich....

http://www.tafkasomm.de
strazer

Beitrag von strazer »

Gern geschehen.
hab schon verzweifelt nach ner Betrags-funktion gesucht, aber so isses noch besser
Meinst du Absolut? Das gibt es nicht direkt in AGS, aber das kannst du ganz einfach selbst machen:

Code: Alles auswählen

  int x = y - z;
  if (x < 0) x = -x; // wenn x negativ ist, mach es positiv
Kannst dir natürlich auch eine eigene benutzerdefinierte abs()-Funktion dafür basteln.
Benutzeravatar
TheIncredibleLovis
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 208
Registriert: 12.04.2005, 18:08
Wohnort: Hamburg, Regen, Frisur hält!

Beitrag von TheIncredibleLovis »

sag mal, strazer, warum meldest du dich nicht an? Du gibst immer gute Tipps! :D
strazer

Beitrag von strazer »

Och nö, ich melde mich generell nur ungern an. Und ich bin hier nicht so viel unterwegs dass es sich wirklich lohnen würde.

Aber Danke trotzdem. :wink:
Antworten