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]



Suche:
(unterstützt mySQL Wildcards ala %)
Titel:
Text:
Autor: