Wikel auf verschiebarer Map
Übersicht

![]() |
ToeBBetreff: Wikel auf verschiebarer Map |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie berechne ich den winkel für die "Kanone", so dass sie sich immer dem schiff zuwendet ?
Code: [AUSKLAPPEN] Graphics 1014,768,16,2 SetBuffer BackBuffer() ;Vaiablen Global MapScrollX Global MapScrollY Global winkel=1,w# Global speed# Global schiff_x=500 ;x-pos des schiffs Global schiff_y=330 ;y-pos des schiffs Global Steuerungs_mode = 2;1 = Tasten;2 = Maus Dim ship(360) Dim ship_r(360) Dim schuss(360) Dim Kanone(360) Global schiff=LoadImage("gfx\ship.png") MaskImage schiff,255,0,255 MidHandle schiff Global schiff_r = LoadImage("gfx\ship_r.png") MaskImage schiff_r,255,0,255 MidHandle schiff_r Global schusspic=LoadImage("gfx\schuss.png") MaskImage schusspic,255,0,255 Global Stars = LoadImage("gfx\Stars.png") MaskImage Stars,1,2,3 Global Zieler = LoadImage("gfx\Zieler.png") MaskImage Zieler,255,0,255 Global Anzeige = LoadAnimImage("gfx\An.png",38,120,0,2) MaskImage Anzeige,255,0,255 Global Station = LoadImage("gfx\station1.png") MaskImage Station,255,0,255 Global Kan = LoadImage("gfx\Kanone.png") MaskImage Kan,255,0,255 MidHandle Kan ;Global schussSnd = LoadSound("snd\schuss.wav") TFormFilter 0 For i = 0 To 360 ship(i) = CopyImage(schiff) RotateImage ship(i),i ship_r(i) = CopyImage(schiff_r) RotateImage ship_r(i),i schuss(i) = CopyImage(schusspic) RotateImage schuss(i),i Kanone(i) = CopyImage(Kan) RotateImage Kanone(i),i Balken(400,300,i) Flip Next FreeImage schiff FreeImage schusspic Cls Type s Field x Field y Field winkel Field speed# End Type Global s.s Global ms_shoot = MilliSecs() Global shootTime# = 0.2 Global redms = MilliSecs() Global redt# = 1 Global redwaitms = MilliSecs() Global redwaittime = 2 Repeat TileImage Stars,-MapscrollX,-MapScrollY If KeyHit(2) Then Steuerungs_mode = 1 If KeyHit(3) Then Steuerungs_mode = 2 If Steuerungs_mode = 2 Then If speed < 1 And KeyDown(17)=0Then speed = 0 If KeyDown(17) Then speed = speed + 0.15 Else If speed > 0 Then speed = speed - 0.25 EndIf If KeyDown(31) Then If speed > 0 Then speed = speed - 0.3 EndIf If speed > 10 Then speed = 10 w = -ATan2(MouseX()-schiff_x,MouseY()-schiff_y)+180 winkel = Abs(w) If MouseDown(1) Then If ms_shoot <= MilliSecs()-(shootTime*1000) Then ;PlaySound schussSnd s.s=New s s\x = ((MapScrollX)+schiff_x)+Sin(winkel)*-7 s\y = ((MapscrollY)+schiff_y)-Cos(winkel)*-7 s\winkel = winkel+180 s\speed = 20 ms_shoot = MilliSecs() EndIf EndIf DrawImage Zieler,MouseX()-17,MouseY()-17 EndIf If Steuerungs_mode = 1 Then If speed < 1 And KeyDown(200)=0Then speed = 0 If KeyDown(200) Then speed = speed + 0.15 Else If speed > 0 Then speed = speed - 0.25 EndIf If KeyDown(208) Then If speed > 0 Then speed = speed - 0.3 EndIf If speed > 10 Then speed = 10 If KeyDown(203) Then winkel = winkel - Int(speed) If KeyDown(205) Then winkel = winkel + Int(speed) If winkel < 0 Then winkel = 360 If winkel > 360 Then winkel = 0 If KeyDown(57) Then If ms_shoot <= MilliSecs()-(shootTime*1000) Then ;PlaySound schussSnd s.s=New s s\x = ((MapScrollX)+schiff_x)+Sin(winkel)*-7 s\y = ((MapscrollY)+schiff_y)-Cos(winkel)*-7 s\winkel = winkel+180 s\speed = 20 ms_shoot = MilliSecs() EndIf EndIf DrawImage Zieler,(schiff_x+Sin(winkel)*200)-16,(schiff_y-Cos(winkel)*200)-16 EndIf MapScrollX = MapScrollX + Sin(winkel) * speed# MapScrollY = MapScrollY - Cos(winkel) * speed# DrawImage Station,900-MapScrollX,900-MapScrollY DrawImage Kanone(www),100,100 DrawImage ship(winkel),schiff_x,schiff_y ;If Not redfinish_ms <= MilliSecs() - redfinishtime Then If redms <= MilliSecs() - (redt*1000) Then DrawImage ship_r(winkel),schiff_x,schiff_y If redwait <= MilliSecs() - (redwaittime*1000) Then redms = MilliSecs() redwait = MilliSecs() EndIf EndIf ;EndIf For s.s=Each s s\x = s\x + Sin(-s\winkel)*s\speed s\y = s\y + Cos(-s\winkel)*s\speed DrawImage schuss(s\winkel-180),(-MapScrollX)+s\x,(-MapScrollY)+s\y Next Text 1,1 ,"Winkel des Schiffes : "+winkel If Steuerungs_mode = 1 Then Text 1,13,"Steuerung : Pfeiltasten Links/Rechts = Zielen:Pfeiltasten Oben/unten=fahren/bremsen:Leertaste = feuern" EndIf If Steuerungs_mode = 2 Then Text 1,13,"Steuerung : Maus = Zielen/Feuern: W/S = fahren/bremsen" EndIf DrawImage Anzeige,100,650,0 DrawImageRect Anzeige,100,650,0,0,38,120-speed*12,1 Flip Cls Until KeyHit(1) End Function Balken(x,y,fs) Local width = ImageWidth(Anzeige) Local height = ImageHeight(Anzeige) Local plus# = width/Float(100) DrawImage Anzeige,x,y,0 DrawImageRect Anzeige,x,y,0,0,width,120-(Float(plus#)*fs),1 End Function Information : Das schiffimage zeigt mit der Spitze nach oben, und das Kanonenimage zeigt mit dem Kanonenrohr nach oben... |
||
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! |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bin grad bei der Arbeit, so kann ich hier kein ausführlichen Bericht schreiben, aber versuche es mal mit ql:Atan2 . Dieses sollte helfen. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja ich weiß das auch... Ich hab ja schon die winkelberechnung der Maus für die Schüsse etc. mit Atan2 gemacht. Aba ich grig das auf der Map net hin.... | ||
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! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group