Image zur Maus drehen....Längeren weg
Übersicht

![]() |
ToeBBetreff: Image zur Maus drehen....Längeren weg |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab für meinen 2D-Spaceshooter ein schiff image:
Code: [AUSKLAPPEN] Dim ship(360)
Dieses Lade und Rotiere es, sodass es 361 Bilder sind. Jetzt hab ich dass mit dem Winkel (Maus) : Code: [AUSKLAPPEN] w = -ATan2(MouseX()-schiff_x,MouseY()-schiff_y)+180
If winkel < Abs(w) Then winkel = winkel + 10 If winkel > Abs(w) Then winkel = winkel - 10 Gemalt wird das schiff so : Code: [AUSKLAPPEN] DrawImage ship(winkel),schiff_x,schiff_y
Dieser code bewirkt, dass sich das Image langsam zur maus dreht. Jetzt sind die winkel aber so eingeteilt : Zitat: 360/0/1
Ich will damit sagen dass 360 und 1 neben einander liegen und wenn ich jetzt den Mauswinkel auf 1 und "winkel" auf 360 dann geht macht der folgendes :Zitat: 360=>350=>340,... => 1 Dass ist aber doof, weil der könnte ja sich direct so drehen : Zitat:360=>0=>1
Wie kann ich das machen dass erst geprüft wird, was kürzer ist : Mit minus rechenen oder mit plus. thx und mfg Crack |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
mit ein bischen suchen habe ich das von mir gefunden
Code: [AUSKLAPPEN] Graphics 800 ,600,16,2
SetBuffer BackBuffer () Dim Panzer (360) ;PanzerGrafik_berechnen > 360 Einzelbilder < Rect 9 ,0,2,20 Rect 0 ,10,20,20,1 Flip Panzer (0) = CreateImage (20 ,30) GrabImage Panzer (0) ,0,0 MidHandle Panzer (0) For z = 1 To 359 panzer (z) = CopyImage (Panzer (0) ) RotateImage panzer (z) ,z Text 500 ,500," Berechne Panzer : " + z If z Mod 10 = 0 Then Flip Cls Next x = 400 : y = 30 ; damit der zielpunkt zu sehen ist Repeat If MouseDown (1) Then x = MouseX () Y = MouseY () ;Winkel bezieht sich auf den Panzer winkel = Objekt_richtung_grad (x,y ,400 ,300) End If posPanzer = (posPanzer + drehAufZiel (pospanzer,winkel) + 360) Mod 360 Oval x - 5 ,y - 5 ,10,10,1 ;Klickpunkt malen DrawBlock Panzer (posPanzer) ,400,300;Panzer malen Text 100 ,30, posPanzer + " Panzer" Text 100 ,60, winkel + " Grad" Flip Cls Until KeyHit (1) End Function Objekt_richtung_grad (Zielpunkt_X,Zielpunkt_Y,Ausgangspunkt_X,Ausgangspunkt_Y ) grad = ATan2 (Zielpunkt_Y - Ausgangspunkt_Y, Zielpunkt_X - Ausgangspunkt_X) + 90 grad = (grad + 360) Mod 360 Return grad End Function Function drehAufZiel (pospanzer,winkel) If posPanzer > Winkel Then If posPanzer - 180 < Winkel Then Return - 1 Else If posPanzer + 180 < Winkel Then Return - 1 End If Return 1 End Function Die Function drehAufZiel ist das Herzstück sozusagen |
||
[BB2D | BB3D | BB+]
|
$tankY |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es ist total überflüssig 361 (!) Bilder zu erstellen, 359 Reichen völlig, wobei 0 360 entspricht. | ||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Heyy, cool danke ! Du hast mir sehr geholfen !!
![]() @$tankY : Doch dass hab ich extra so gemacht wegen des winkels...(Maus winkels) ~Edit~ @Rallimen : Wofür steht denn das "pospanzer" ?? |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Pospanzer ist der Winkel des Panzers und Winkel ist der wohin er sich drehen soll | ||
[BB2D | BB3D | BB+]
|
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja hab ich auch bemerkt (aber leider erst dann als der Threat schon geschrieben war ... ![]() trotzdem danke für den Code ! Der hat mir sehr weiter geholfen ! ~EDIT~ Nochmal ne frage ![]() Wie kann ich das ganze so übertragen, dass ich das auch ohne Function machen kann, weil mit Function ruckkelt dass dann immer so, wenn mein schiff den winkel der maus "getroffen" hat... |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
RallimenSieger des 30-EUR-WettbewerbsBetreff: rad |
![]() Antworten mit Zitat ![]() |
---|---|---|
das liegt an deiner 10Grad Begrenzung!!
Einfach wenn Gradisstanz kleiner 10 then funktion oder so.... |
||
[BB2D | BB3D | BB+]
|
Beatenvoy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
schau das mal an !
Code: [AUSKLAPPEN] Mod((Atan(yBild0 - yBild1,xBild0 -xBild1)+360),360)
|
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Beatenvoy hat Folgendes geschrieben:
hää ? Was soll ich denn damit ?? thx und mfg Crack |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
keine ahnung aber die syntx ist falsch:
(ATan(yBild0 - yBild1,xBild0 -xBild1)+360) mod 360 Und das ganze gibt den winkel ATan(...) auf einer skala von 0 bis 360 zurück |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group