I read the excellent article on smoothly moving from point a to point b and thought some work I had done on vector printing using bezier splines might have a application here. The code follows below, it could be used for examples like :
Missles gaining height and then shooting off towards their target
Aliens outflanking players etc
GETSCREENSIZE screenwidth,screenheight
sx=screenwidth*.2;sy=screenheight*.5 //start point
ex=screenwidth*.8;ey=screenheight*.5 //end point
bx=screenwidth*.5;by=screenheight*.5 //curve towards point
animTime=2000 //animation time of 2 seconds
startTime=GETTIMERALL()
WHILE TRUE
MOUSESTATE bx,by,b1,b2
elapsed = GETTIMERALL()-startTime
IF elapsed > animTime //restart the animation
startTime = GETTIMERALL()
elapsed = 0
ENDIF
T=elapsed/animTime //how long along the path
x= CalcQuadBezier(sx,bx,ex,T) //calculate position
y= CalcQuadBezier(sy,by,ey,T)
DRAWRECT x,y,10,10,255
PRINT "Time:"+elapsed,0,20
PRINT "< Curves Toward",bx,by
PRINT "^ start point",sx,sy+10
PRINT "^ end point",ex,ey+10
SHOWSCREEN
WEND
END
//point0=start point, point1=bezier point, point2 = end point, 0FUNCTION CalcQuadBezier: Point0,Point1,Point2,t
pt = POW((1-t),2)*Point0 + 2*t*(1-t)*Point1 +t*t*Point2
RETURN pt
ENDFUNCTION
looks nice, could be very handy for controlling enemy ships or something like that
Genious!
Excellent stuff! :)
Nice stuff, but pls use the "codeblock" for posting code, thx !