Winkelabfrage -> Oben,Unten,Links oder Rechts von Slayer |
;Hi, ;ist ne kleine Function zur abfrage ob etwas von Oben,Links,Unten ;oder Rechts kommt. ;Wenn man will kann mans auch noch genauer mit float machen ;oder die winkel so anpassen damit man auch die diagonalen hat ;Dafür brauchen wir noch ATan2() , Danke Junky und Netmaster [code:1:5f1026ca2d] Graphics 640,480,16,2 SetBuffer BackBuffer() ;einfach kleines Bild laden, 32*32 Global a = LoadAnimImage("gfx4.bmp",32,32,0,1) Global b =LoadAnimImage("gfx5.bmp",32,32,0,1) Global re Global oben,unten,links,rechts Global x1 = 400,y1 = 400 Global x2 = 200,y2 = 200 ;..................................................... While Not KeyHit(1) links = KeyDown(203) rechts = KeyDown(205) oben = KeyDown(200) unten = KeyDown(208) ;.... If oben Then y1 = y1 - 1 If unten Then y1 = y1 + 1 If rechts Then x1 = x1 + 1 If links Then x1 = x1 - 1 ;...... If re = 2 And col Then x1 = x1 + 1 If re = 4 And col Then x1 = x1 - 1 If re = 1 And col Then y1 = y1 - 1 If re = 3 And col Then y1 = y1 + 1 ;.... winkel=(ATan2(y2-y1,x2-x1)+360)Mod 360 col = ImagesCollide(b,x2,y2,0,a,x1,y1,0) re = f_winkel(winkel) ;........ Text 100,100,"winkel "+winkel+"°" Text 100,120,"richtung "+re Text 100,140,"Kollision "+col DrawImage a,x1,y1,0 DrawImage b,x2,y2,0 Flip Cls Wend End ;.................................................... Function f_winkel(l_i = 0) If (l_i > 45 And l_i < 135) Then l_a = 1 ;oben ;................ If (l_i > 135 And l_i < 225) Then l_a = 2 ;rechts ;................ If (l_i < 315 And l_i > 225) Then l_a = 3 ;unten ;................ If (l_i > 315 Or l_i < 45) Then l_a = 4 ;links Return l_a End Function [/code:1:5f1026ca2d] |