Thanks for the input Sven B. I'll be sure to add those equations in once I have collision up and running.
I got a collision function working but how should I return the coordinates of where the collision occurred? Currently I'm using strings but is there a better way?
Here's my function.
Function PixelCollisionPoint(spr1,spr2)
if Sprite Collision(spr1,spr2)
Img1=Sprite Image(spr1)
Img2=Sprite Image(spr2)
X20=Sprite X(spr2)
Y20=Sprite Y(spr2)
X10=Sprite X(spr1)
Y10=Sprite Y(spr1)
Ang11=Sprite Angle(Spr1)
Ang12=180-((Sprite Angle(Spr1))+90)
Leng1#=Sprite width(Spr1)
Width1#=Sprite Height(Spr1)
OffX#=cos(Ang11*1.0)*(Leng1#/2.0)
OffY#=sin(Ang11*1.0)*(Leng1#/2.0)
OffX2#=cos(Ang12*1.0)*(Width1#/2.0)
OffY2#=sin(Ang12*1.0)*(Width1#/2.0)
X11=X10+OffX#+OffX2#
Y11=Y10+OffY#-OffY2#
X12=X10+OffX#-OffX2#
Y12=Y10+OffY#+OffY2#
X13=X10-OffX#-OffX2#
Y13=Y10-OffY#+OffY2#
X14=X10-OffX#+OffX2#
Y14=Y10-OffY#-OffY2#
ink rgb(255,255,255),rgb(0,0,0)
ColMem=1
while memblock exist(ColMem)
inc ColMem
endwhile
Make memblock from image ColMem,Img2
Collide1$=CalculateSideCol(ColMem,X11,Y11,X12,Y12,X20,Y20)
Collide2$=CalculateSideCol(ColMem,X12,Y12,X13,Y13,X20,Y20)
Collide3$=CalculateSideCol(ColMem,X13,Y13,X14,Y14,X20,Y20)
Collide4$=CalculateSideCol(ColMem,X14,Y14,X11,Y11,X20,Y20)
Collide$=Collide1+Collide2+Collide3+Collide4
delete memblock ColMem
endif
Endfunction
Function CalculateSideCol(Mem,X1,Y1,X2,Y2,X21,Y21)
memWidth=Memblock dword(Mem,0)
memHeight=Memblock dword(Mem,4)
memSize=Get Memblock size(Mem)
Collide$=""
if (X1-X2<>0)
m#=(Y1-Y2)/(X1-X2)
b#=Y1-(m#*X1)
If X1<X2 then Direc#=1.0 else Direc#=-1.0
For XP#= X1*1.0 to X2*1.0 Step Direc#
YP#=(m#*XP#)+b#
Pos=(3+(XP#-(X21*1.0))+(YP#-(Y21*1.0))*memWidth)*4
if Pos<memSize and Pos>0
Color=rgb(memblock byte(Mem,Pos),memblock byte(Mem,Pos+1),memblock byte(Mem,Pos+2))
If Color<>rgb(0,0,0)
Collide$=str$(int(XP#))+","+str$(int(YP#))
endif
endif
next XP#
else
If Y1<Y2 then Direc#=1.0 else Direc#=-1.0
For YP#= Y1*1.0 to Y2*1.0 Step Direc#
Pos=(3+(X1-(X21*1.0))+(YP#-(Y21*1.0))*memWidth)*4
if Pos<memSize and Pos>0
Color=rgb(memblock byte(Mem,Pos),memblock byte(Mem,Pos+1),memblock byte(Mem,Pos+2))
If Color<>rgb(0,0,0)
Collide$=str$(int(XP#))+","+str$(int(YP#))
endif
endif
next YP#
endif
Endfunction
My computer surpasses all the technologies of the day. What computer do I have?