Darthfett / A-Priori-Physics-System

A side-scroller game based upon Mega Man X, with a priori collision detection, and objects being represented as a sequence of connected points.
3 stars 0 forks source link

Player completely goes through ground #28

Closed Darthfett closed 12 years ago

Darthfett commented 12 years ago

game.Game.GameTime = 35034.26893771297 player shape is a generated circle of 6 sides _PlayerPosition = Vector(30, 350) _PlayerVelocity = Vector(0, 0) Gravity = Vector(0, -200) ground shape is a rectangle offset inwards from the edges of the screen by 10

Situation: Player bounces up, and then falls through the bottom edge of the ground shape. At this time, no intersections are calculated between the player and ground.

Darthfett commented 12 years ago

More debug information. Intersection at this time tells me the player and ground information:

One of the bottom Player Lines which should collide: [(50.00000000000001, 0.0) to (6.698729810778083, 24.99999999999998)] Player position: (30.0, 9.999999999998863) Player velocity: (0.0, 368.78177829171614) Player acceleration: (0, -200) bottom Ground line: [(10, 10) to (630, 10)]

Darthfett commented 12 years ago

reproducible with this:

find_intersections(Line((50.00000000000001, 0), (6.698729810778083, 24.99999999999998)) + Vector(30.0, 9.999999999998863), Vector(0.0, 368.78177829171614), Vector(0, -200), Line((10, 10), (630, 10)), Vector(0,0), Vector(0,0))

Which SHOULD have output similar to this: [I(3687.78, (80.00, 10.00), F), I(0.00, (80.00, 10.00), F)]

But gives this: [I(0.00, (80.0, 9.999999999999988), F)]

Note that to get the reproducible values, I have disabled rounding, so it is clear that this might be a float rounding issue... :(