public void obstacleCollision(SolidObstacle o)
{
if (intersects(o.obstacle))
{
if ((o.obstacle.Left <= Position.X && Position.X <= o.obstacle.Right))
{
if (Math.Abs(Position.Y - o.obstacle.Top) < Math.Abs(Position.Y - o.obstacle.Bottom))
{
position.Y = o.obstacle.Top - radius;
}
else {position.Y = o.obstacle.Bottom + radius; }
Velocity *= new Vector2(1, -1);
}
else if ((o.obstacle.Top <= Position.Y && Position.Y <= o.obstacle.Bottom))
{
if (Math.Abs(Position.X - o.obstacle.Left) < Math.Abs(Position.X - o.obstacle.Right))
{
position.X = o.obstacle.Left - radius;
}
else { position.X = o.obstacle.Right + radius; }
Velocity *= new Vector2(-1, 1);
}
}
}