character dropdown when i move the box

I write a simple script to control the Box movement by TouchPhase().
When character on the box, character’s transform can parent to the box and move with it, but dropdwon from the box.(it’s overlap)
How can i keep cheracter always on the box when the box move?
I need help, thank you!

var moveSpeed          : float = 0.1;
private var hit        : RaycastHit;
private var layerMask  = 1 << 8;

function Update()
{
  if( Input.touchCount > 0 )
  {
         var touch = Input.GetTouch(0);        
	 var ray = Camera.main.ScreenPointToRay( touch.position );
	 var touchDeltaPosition : Vector2 = touch.deltaPosition;

      if( touch.phase == TouchPhase.Moved )
      {          	                
	      if( Physics.Raycast( ray, hit, 50, layerMask ) )
	      {       
	        transform.Translate( touchDeltaPosition.x* moveSpeed, 0, 0 );
	           
	      }
      }
           
  }

  
}

function OnTriggerEnter( other : Collider )
{
  if( other.gameObject.tag == "Player")
  {
    other.transform.parent = transform;
  }
}

function OnTriggerExit( other : Collider )
{
  if( other.gameObject.tag == "Player" )
  {
    other.transform.parent = null; 
  }
}

it’s work when i use FixedUpdate() instead of Update().