Class: AGL::Ramp
- Inherits:
-
Object
- Object
- AGL::Ramp
- Defined in:
- lib/minigl/movement.rb
Instance Method Summary collapse
- #can_collide?(obj) ⇒ Boolean
- #check_intersection(obj) ⇒ Object
- #contact?(obj) ⇒ Boolean
- #get_x(obj) ⇒ Object
- #get_y(obj) ⇒ Object
-
#initialize(x, y, w, h, left) ⇒ Ramp
constructor
A new instance of Ramp.
- #intersects(obj) ⇒ Object
Constructor Details
#initialize(x, y, w, h, left) ⇒ Ramp
Returns a new instance of Ramp.
18 19 20 21 22 23 24 |
# File 'lib/minigl/movement.rb', line 18 def initialize x, y, w, h, left @x = x @y = y @w = w @h = h @left = left end |
Instance Method Details
#can_collide?(obj) ⇒ Boolean
26 27 28 |
# File 'lib/minigl/movement.rb', line 26 def can_collide? obj @can_collide = (obj.speed.y >= 0 and not intersects(obj)) end |
#check_intersection(obj) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/minigl/movement.rb', line 30 def check_intersection obj if @can_collide and intersects obj obj.y = get_y obj obj.speed.y = 0 # a = @w / @h # x = get_x(obj) # y = get_y(obj) # w = obj.x - x # h = obj.y - y # dx = w * h / (w * a + h) # dy = dx * a # # obj.x -= dx # obj.y -= dy # obj.speed.x *= (@w / (@w + @h)) # obj.speed.y = 0 end end |
#contact?(obj) ⇒ Boolean
49 50 51 |
# File 'lib/minigl/movement.rb', line 49 def contact? obj obj.x.round(6) == get_x(obj).round(6) && obj.y.round(6) == get_y(obj).round(6) end |
#get_x(obj) ⇒ Object
57 58 59 60 |
# File 'lib/minigl/movement.rb', line 57 def get_x obj return @x + (1.0 * (@y + @h - obj.y - obj.h) * @w / @h) - obj.w if @left @x + (1.0 * (obj.y + obj.h - @y) * @w / @h) end |
#get_y(obj) ⇒ Object
62 63 64 65 66 67 |
# File 'lib/minigl/movement.rb', line 62 def get_y obj return @y - obj.h if @left && obj.x + obj.w > @x + @w return @y + (1.0 * (@x + @w - obj.x - obj.w) * @h / @w) - obj.h if @left return @y - obj.h if obj.x < @x @y + (1.0 * (obj.x - @x) * @h / @w) - obj.h end |
#intersects(obj) ⇒ Object
53 54 55 |
# File 'lib/minigl/movement.rb', line 53 def intersects obj obj.x + obj.w > @x && obj.x < @x + @w && obj.y > get_y(obj) && obj.y <= @y + @h - obj.h end |