Sopii esim. törmäykseen, vankiin, ym.
Function KeepDistance(x1,y1,x2,y2,dis,mode,ret)
x1,y1 piste jota tarkkaillaan
x2,y2 piste josta tarkkaillaan
dis etäisyys
mode
-1 ei päästä kauemmaksi (esim. vanki)
0 ehdoton etäisyys (esim. pyörivä moukari)
1 ei päästä lähelle (esim. törmäys)
Code: Select all
dis=30
x1=200
y1=150
Repeat
x2=MouseX()
y2=MouseY()
Text 5,5,"Mode: "+mode
Text 5,30,"Distance: "+dis
Text 5,250,"UP/DOWN to change distance."
Text 5,270,"LEFT/RIGHT To change mode."
Circle x1-dis,y1-dis,dis*2,0
Line x1,y1,keepdistance(x2,y2,x1,y1,dis,mode,0),keepdistance(x2,y2,x1,y1,dis,mode,1)
DrawScreen
dis=dis+UpKey()-DownKey()
mode=mode+KeyHit(205)-KeyHit(203)
Forever
Function KeepDistance(x1,y1,x2,y2,dis,mode=0,ret=0)
angle=GetAngle(x1,y1,x2,y2)
If mode=>0 And Distance(x1,y1,x2,y2)<dis Then x1=x2-Cos(angle)*dis:y1=y2+Sin(angle)*dis
If mode=<0 And Distance(x1,y1,x2,y2)>dis Then x1=x2-Cos(angle)*dis:y1=y2+Sin(angle)*dis
If ret=0 Then
Return x1
Else
Return y1
EndIf
EndFunction