The “slow falling” is because gravity is not allowed to accumulate, causing it to fall at a constant speed rather than accelerate as it should.
Slowdown IRL is due to air drag and friction. In Unity this is done with the “drag” property on the rigidbody, and applying physics materials with friction on your colliders. They may or may not be enough for your purpose, in all likelihood not though.
I have to make some assumptions since you have not revealed your code. I will assume your enemy movement direction only occurs on the X and Z axis, and you are simply multiplying the movement direction by your desired speed. Then you apply the movement vector to your rigidbody velocity. If this is indeed the case, all you need to do to preserve the effect of gravity, is to cache the rigidbody.velocity.y, and reapply it to your movement vector before applying it to the rigidbody.velocity
float cacheY = rb.velocity.y;
Vector3 movementVect = yourTravelDirection * yourTravelSpeed;
movement.y = cacheY;
rb.velocity = movementVect;
If you step away from manipulating velocity and instead use AddForce, you will have to check the X and Z velocities, to see if they currently exceed your desired max speed, before applying your AddForce.
Vector3 checkSpeed = rb.velocity
checkSpeed.y = 0;
If(checkSpeed.magnitude < yourMaxSpeed){
rb.AddForce(yourMovementForce);
}
The disadvantage of this method, is the inability to turn on a dime, and dependent on using the Physics system to stop. Any other method to stop will most likely involve manipulating velocity directly anyway, so you might aswell move by manipulating velocity directly at that point.
With either method, the effect of gravity will be preserved, but you still might not move on the slope well if your movement is too fast. I’ve answered this before conceptually, so I’ll link it here first, just in case you encounter this problem.
https://discussions.unity.com/t/781837/4