Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Improve Bounce Example to include more realistic physics

  • Loading branch information...
commit 94b0663c220952b281103271c582fb7d43b5287f 1 parent 08a9135
@larskanis authored
Showing with 19 additions and 7 deletions.
  1. +19 −7 examples/bounce.rb
View
26 examples/bounce.rb
@@ -25,7 +25,7 @@ def initialize(r)
@x = @center.x - @radius
@y = @center.y - @radius
@color = FXRGB(255, 0, 0) # red
- @dir = FXPoint.new(-1, 0)
+ @dir = FXPoint.new(-1, -1)
setWorldSize(1000, 1000)
end
@@ -38,12 +38,20 @@ def draw(dc)
dc.fillArc(x, y, w, h, 64*270, 64*360)
end
- def bounce
- @dir = -@dir
+ def bounce_x
+ @dir.x=-@dir.x
end
- def collision?
- (x < 0) || (x+w > worldWidth) || (y < 0) || (y+h > worldHeight)
+ def bounce_y
+ @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
def setWorldSize(ww, wh)
@@ -58,8 +66,12 @@ def move(units)
center.y += dy
@x += dx
@y += dy
- if collision?
- bounce
+ if collision_x?
+ bounce_x
+ move(units)
+ end
+ if collision_y?
+ bounce_y
move(units)
end
end
Please sign in to comment.
Something went wrong with that request. Please try again.