Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Game Maker Domäne. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

Pausenbrot

Legionär

  • »Pausenbrot« ist der Autor dieses Themas

Beiträge: 10

  • Private Nachricht senden

1

Sonntag, 7. August 2005, 11:17

Langsames drehen zur Maus

Ich habe ein Problem beim drehen des Geschützturms meines Panzers.
Ich will das der Turm in Richtung der Maus zeigt. Er soll der aktuellen Mausposition aber nur LANGSAM folgen.

Ich habe im beigefügten Programm meinen "Erfolg" beigepackt. Der Turm dreht sich zwar langsam, aber er hält nicht an wenn er in Richtung der Maus zeigt, und er ändert die Drehrichtung auch nur beim Sprung von 360°-0° und bei dem Sprung von 180°-181°.

Hat wer eine Idee wie ich mein Problem Lösen könnte?
»Pausenbrot« hat folgende Datei angehängt:
  • Turret Test.zip (5,12 kB - 129 mal heruntergeladen - zuletzt: 15. November 2011, 17:37)
Es gibt sicher auch ganz einfache Lösungen, aber wer versteht die schon?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Pausenbrot« (9. August 2005, 14:02)


Dragoon

Foreneigener Hausdrache

Beiträge: 714

Game Maker Version: 6 registriert

Selbsteinschätzung: GML Experte

  • Private Nachricht senden

2

Sonntag, 7. August 2005, 13:32

GML

1
2
3
4
5
6
7
8
9
10
{
if(tur_dir>359){tur_dir=0} //ist hoffentlich klar
if(tur_dir<0){tur_dir=359} //das auch
dir_mouse=point_direction(x,y,mouse_x,mouse_y) //das nehme ich auch an
dir=dir_mouse-tur_dir //winkel unterschied berrechne
if(dir>180){dir=-(360-dir)} //wenn winkel >180 soll der andere winkel berechnet werden
if(dir<-180){dir=360+dir} //mit <-180
if(dir<-1){tur_dir-=1} //nach rechts drehen (1 ersetzten durch geschwindigkeit)
if(dir>1){tur_dir+=1} //nach links drehen (siehe oben)
}


ich hoffe du meinst das =)
ich hoffe es ist verständlich :D
sonst...bin immer für fragen offen

EDIT by Defmaster: Bei GML Code auch bitte den GML Tag verwenden.

EDIT by Dragon: sry habs noch nicht entdeckt :D bin ja erst ein paar tage hier
int (*x(*x(int))[5])(int*);
Confused? Yes, it's C!

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Dragoon« (7. August 2005, 14:13)


Pausenbrot

Legionär

  • »Pausenbrot« ist der Autor dieses Themas

Beiträge: 10

  • Private Nachricht senden

3

Montag, 8. August 2005, 08:30

Vielen Dank Dragon...!
Genau das habe ich gesucht...

Ich schreibe dich in meine Special Tanks!
Es gibt sicher auch ganz einfache Lösungen, aber wer versteht die schon?

Dragoon

Foreneigener Hausdrache

Beiträge: 714

Game Maker Version: 6 registriert

Selbsteinschätzung: GML Experte

  • Private Nachricht senden

4

Montag, 8. August 2005, 13:23

cool bin in nem spiel verewigt :D
int (*x(*x(int))[5])(int*);
Confused? Yes, it's C!