OnTriggerEnter getting delay when object is moving?

When object is moving from pointb to pointc (note they are defined vector3 points in program) the OnTriggerEnter function do not work untill object reached at it’s destination (pointc) and then enter in OnTriggerEnter function and move from pointb to pointd.

I want to move object from pointb to pointc but when object collide then it should stop moving and enter into the OnTriggerEnter function.

function Start () {
 yield MoveObject(transform, pointB, pointc, 2.0);
}

function OnTriggerEnter (other : Collider) {
	pointd = Vector3(14.5,-16.306,28.6);
	MoveObject(transform, pointB, pointd, 3);
}

function MoveObject (thisTransform : Transform, startPos : Vector3, endPos : Vector3, time : float) {
var i = 0.0;
var rate = 2.0/time;
while (i < 1.0) {
    i += Time.deltaTime * rate;
    thisTransform.position = Vector3.Lerp(startPos, endPos, i);
    yield; 
}
}

You are starting the coroutine MoveObject() from your Start function which is moving your object from pointB to pointC.

So in your OnTriggerEnter you should cancel the previously started coroutine first and then start a new coroutine to move the object from pointB to pointD.

There are two coroutines that are working concurrently in your code that are moving the same object.