| |
|
|
| Habe mal eine kleine kollisionsroutine geschrieben mit einer API-Funktion. Dabei wird als Ausgabe ein Collisonsrechteck ausgegeben , also die Überschneidungsfläche als Werte. Damit kann man eine gute schnelle Punkauswertung herstellen mit XPIA/ASM und/oder Profan2Cpp. Steuern mit den Tasten QWES und nur hinschauen. Links habe ich auch die Fläche im Visier wo die collision stattfindet. Ein kleinen Kontrollschirm mit hpiccopy, war überrascht wozu man das Anwenden kann. Im rechteck1# kommen die Collidaten, im rechteck2# und rechteck3# kommen die Lagedaten der Collisionsrechtecke.
mfg KompilierenMarkierenSeparieren $H Windows.ph
proc collision
StartPaint hintergr1&
drawpic hintergr&,0,0;0
DrawPic bild_block&,xx1&,yy1&;0
DrawPic bild_auto&,x1&,y1&;0
EndPaint
StartPaint hwin&
drawpic hintergr1&,200,20;0
EndPaint
deleteobject hbild&
hbild&=create(hpiccopy,hintergr1&,&loop+150,150,150,150)
startpaint hwin&
drawpic hbild&,20,20;0
endpaint
With rechteck1#
.x& = 0
.y& = 0
.w& = 0
.h& = 0
EndWith
With rechteck2#
.x& = x1&
.y& = y1&
.w& = x1&+64
.h& = y1&+64
EndWith
With rechteck3#
.x& = 200
.y& = 200
.w& = 264
.h& = 264
EndWith
cls
colli&=~IntersectRect(rechteck1#,rechteck2#,rechteck3#)
print colli&
print rechteck1#.x&; ;rechteck1#.y&; ;rechteck1#.w&; ;rechteck1#.h&
endproc
declare rechteck1#,rechteck2#,rechteck3#
declare x1&,y1&,xx1&,yy1&,colli&
declare hWin&,bild_auto&,bild_block&,hintergr& ,hintergr1&,ende& ,hbild&
Window 20,20-200,200
hWin& = Create(Window, %hWnd, Test, 250, 20, 650,500)
STRUCT rect = x&,y&,w&,h&
DIM rechteck1#, rect
DIM rechteck2#, rect
DIM rechteck3#, rect
bild_auto&=Create(hnewpic,64,64,$0000ff)
bild_block&=Create(hnewpic,64,64,$ff0000)
hintergr&=create(hnewpic,400,400,$00ffff)
hintergr1&=create(hnewpic,400,400,$00ffff)
ende& = 0
x1&=50
y1&=50
xx1&=200
yy1&=200
collision
WhileNot ende&
sleep 1
if isKey(65)
ende& = 1
endif
if isKey(69)
x1&=x1&+1
collision
endif
if isKey(81)
x1&=x1&-1
collision
endif
if isKey(83)
y1&=y1&+1
collision
endif
if isKey(87)
y1&=y1&-1
collision
endif
EndWhile
End
|
|
|
| |
|
|