/// <summary> /// ExitStateのDo処理をする関数 /// </summary> public void OnExit() { var newsUIRect = gameObject.GetComponent <RectTransform>(); // 1フレーム間の移動量を計算する float moveValuePer1SecondSpeed = distance / entryTime; float moveValuePer1frameSpeed = moveValuePer1SecondSpeed * Time.deltaTime; // 移動 var newsUIPos = newsUIRect.localPosition; newsUIPos += normalMoveVec * moveValuePer1frameSpeed; newsUIRect.localPosition = newsUIPos; // 移動量を更新 nowDistance += moveValuePer1frameSpeed; // 規定距離以上移動したなら if (nowDistance > distance) { // X方向のみ位置を修正 var rectPos = newsUIRect.localPosition; rectPos.x = targetPos.x; newsUIRect.localPosition = rectPos; // EntryStateを終了 newsUI.IdleStart(); } }