Skip to content
Snippets Groups Projects
Commit 94b0663c authored by Lars Kanis's avatar Lars Kanis
Browse files

Improve Bounce Example to include more realistic physics

parent 08a9135f
No related branches found
No related tags found
No related merge requests found
...@@ -25,7 +25,7 @@ class Ball ...@@ -25,7 +25,7 @@ class Ball
@x = @center.x - @radius @x = @center.x - @radius
@y = @center.y - @radius @y = @center.y - @radius
@color = FXRGB(255, 0, 0) # red @color = FXRGB(255, 0, 0) # red
@dir = FXPoint.new(-1, 0) @dir = FXPoint.new(-1, -1)
setWorldSize(1000, 1000) setWorldSize(1000, 1000)
end end
...@@ -38,12 +38,20 @@ class Ball ...@@ -38,12 +38,20 @@ class Ball
dc.fillArc(x, y, w, h, 64*270, 64*360) dc.fillArc(x, y, w, h, 64*270, 64*360)
end end
def bounce def bounce_x
@dir = -@dir @dir.x=-@dir.x
end end
def collision? def bounce_y
(x < 0) || (x+w > worldWidth) || (y < 0) || (y+h > worldHeight) @dir.y=-@dir.y
end
def collision_y?
(y<0 && dir.y<0) || (y+h>worldHeight && dir.y>0)
end
def collision_x?
(x<0 && dir.x<0) || (x+w>worldWidth && dir.x>0)
end end
def setWorldSize(ww, wh) def setWorldSize(ww, wh)
...@@ -58,8 +66,12 @@ class Ball ...@@ -58,8 +66,12 @@ class Ball
center.y += dy center.y += dy
@x += dx @x += dx
@y += dy @y += dy
if collision? if collision_x?
bounce bounce_x
move(units)
end
if collision_y?
bounce_y
move(units) move(units)
end end
end end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment