public void StartSpin(CompeletionCallback cb)
 {
     spinAxis = 0;
     spinAxisCurrent = 0f;
     spinAxisGoal = spinAxisGoalBase + 90f * Random.Range(1, 4);
     rollCompelete = cb;
 }
 void Update()
 {
     if(spinAxes[spinAxis]!=Vector3.zero)
     {
         float degrees = Mathf.Min(spinAxisSpeed*Time.deltaTime, spinAxisGoal-spinAxisCurrent);
         transform.RotateAroundLocal(spinAxes[spinAxis], degrees*Mathf.Deg2Rad);
         spinAxisCurrent += degrees;
         if(spinAxisCurrent>=spinAxisGoal)
         {
             spinAxis++;
             if(spinAxes[spinAxis]==Vector3.zero)
             {
                 if(rollCompelete!=null) rollCompelete();
                 rollCompelete = null;
                 return;
             }
             spinAxisCurrent = 0;
             spinAxisGoal = spinAxisGoalBase + 90f * Random.Range(1, 4);
         }
     }
 }