I have this at the moment, but it doesn't work very well, at somepoint it even does work correctly but then again... not.
wallAngle = ATan2(wll.getY1() - wll.getY2(), wll.getX1() - wll.getX2()) ' WALL ANGLE
objectAngle = ATan2(oy - obj.getY(), ox - obj.getX()) ' OBJECT ANGLE
objectStepLength = Sqr((ox - obj.getX())^2 + (oy - obj.getY())^2)
objectIntersectStepLength = Sqr((ox - intersect.getX())^2 + (oy - intersect.getY())^2)
obj.setX(intersect.getX() + Cos(360 - (objectAngle - wallAngle)) * (objectStepLength - objectIntersectStepLength) )
obj.setY(intersect.getY() + Sin(360 - (objectAngle - wallAngle)) * (objectStepLength - objectIntersectStepLength))
obj.setXSpeed(Cos(360 - (objectAngle - wallAngle)) * objectStepLength)
obj.setYSpeed(Sin(360 - (objectAngle - wallAngle)) * objectStepLength)
basically it's: 360 - (object_moving_angle - wall_angle)
|