Below a example of how to do circle to circle collision. There is a function in the code that does it. You can copy it out and paste it in your own code.
Code below :
Import mojo
Class bubble
Field x:Float
Field y:Float
Field incx:Float
Field incy:Float
Method New()
x = Rnd(640)
y = Rnd(480)
incx = Rnd(-1,1)
incy = Rnd(-1,1)
End
End
Global blist:List<bubble> = New List<bubble>
Class MyGame Extends App
Method OnCreate()
SetUpdateRate(60)
For Local i:Int = 0 Until 10
blist.AddLast(New bubble)
End
End
Method OnUpdate()
For Local i:bubble = Eachin blist
i.x+=i.incx
i.y+=i.incy
If i.x<0 Then i.x = 640
If i.x>640 Then i.x = 0
If i.y<0 Then i.y = 480
If i.y>480 Then i.y = 0
End
For Local i:bubble = Eachin blist
For Local ii:bubble = Eachin blist
If i<>ii
If circleoverlap(i.x,i.y,10,ii.x,ii.y,10) = True
blist.Remove ii
End
End
End
End
End
Method OnRender()
Cls(0,0,0)
SetColor(255,255,255)
For Local i:bubble = Eachin blist
DrawCircle i.x,i.y,10
End
End
End
Function Main()
New MyGame()
End
Function circleoverlap:Bool(x1:Int,y1:Int,r1:Int,x2:Int,y2:Int,r2:Int)
Local dx:Int = x1-x2
Local dy:Int = y1-y2
Local r:Int = r1+r2
If dx*dx+dy*dy <= r*r Then Return True Else Return False
End
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.