The reason you are having problems simulating gravity is becuase you're not simulating real physics.
In real physics, gravity always pulls down on you, even when jumping, and even when colliding with the floor, or a wall.
But when colliding with a floor or a wall, you are prevented from going through it by the wall or floor extering an equal, but opposite force on your body. In other words, when you are in contact with the floor, gravity pulls you down at 9.8m/s^2, but the floor pushes back up at 9.8m/s^2. The net result is no movement.
But that's for flat surfaces on the XZ plane. If the surface is angled then the normal force pushing back will also be at an angle, and so the net result will be that your ball continues moving downward, but also horizontally, along the slope of the surface. Or it might bounce off it, depending on just how elastic your objects are.
And when I say elastic what I mean is how much like a rubber ball your objects are. When a person lands on the ground a lot of energy is converted into heat, and they don't bounce much. In fact, they lose so much energy with each bounce they don't appear to bounce at all. A rubber ball on the other hand will store all that energy instead of converting it to heat and then spring back into shape and bounce like you'd expect.
Since simulating all that physics realistically is probably too much for you, then what I'd do is get the surface normal of the object which was collided with. I think Blitz returns that when you collide with something.
That normal's Y component will tell you how much the object is pointing up. It should be a number between -1 and 1. If it's 0..1 then the surface points up to some degree.
Knowing that, you can turn off gravity only when an object collides with a surface which points up. Or points up a LOT. And you can enable sliding collisions for the objects and let the character slide when they are on a steep surface.
Oh and "real" jumping isn't done by turning gravity off either. You just apply a force opposite the gravity which is greater than it, and the object moves up and the gravity eventually overcomes the upward momentum and pulls the object back down again.
In real physics, gravity always pulls down on you, even when jumping, and even when colliding with the floor, or a wall.
But when colliding with a floor or a wall, you are prevented from going through it by the wall or floor extering an equal, but opposite force on your body. In other words, when you are in contact with the floor, gravity pulls you down at 9.8m/s^2, but the floor pushes back up at 9.8m/s^2. The net result is no movement.
But that's for flat surfaces on the XZ plane. If the surface is angled then the normal force pushing back will also be at an angle, and so the net result will be that your ball continues moving downward, but also horizontally, along the slope of the surface. Or it might bounce off it, depending on just how elastic your objects are.
And when I say elastic what I mean is how much like a rubber ball your objects are. When a person lands on the ground a lot of energy is converted into heat, and they don't bounce much. In fact, they lose so much energy with each bounce they don't appear to bounce at all. A rubber ball on the other hand will store all that energy instead of converting it to heat and then spring back into shape and bounce like you'd expect.
Since simulating all that physics realistically is probably too much for you, then what I'd do is get the surface normal of the object which was collided with. I think Blitz returns that when you collide with something.
That normal's Y component will tell you how much the object is pointing up. It should be a number between -1 and 1. If it's 0..1 then the surface points up to some degree.
Knowing that, you can turn off gravity only when an object collides with a surface which points up. Or points up a LOT. And you can enable sliding collisions for the objects and let the character slide when they are on a steep surface.
Oh and "real" jumping isn't done by turning gravity off either. You just apply a force opposite the gravity which is greater than it, and the object moves up and the gravity eventually overcomes the upward momentum and pulls the object back down again.