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); } } }