/// <summary> /// EntryStateのDo処理をする関数 /// </summary> public void OnEntry() { var newsUIRect = gameObject.GetComponent <RectTransform>(); // 1フレーム間の移動量を計算する float moveValuePer1SecondSpeed = distance / entryTime; float moveValuePer1FrameSpeed = moveValuePer1SecondSpeed * Time.deltaTime; // 1フレーム間の拡大量を計算する float growValueXPer1SecondSpeed = sizeDiference.x / entryTime; float growValueYPer1SecondSpeed = sizeDiference.y / entryTime; float growValueXPer1FrameSpeed = growValueXPer1SecondSpeed * Time.deltaTime; float growValueYPer1FrameSpeed = growValueYPer1SecondSpeed * Time.deltaTime; // 移動 var newsUIPos = newsUIRect.localPosition; newsUIPos += normalMoveVec * moveValuePer1FrameSpeed; newsUIRect.localPosition = newsUIPos; // 拡大 var newsUISize = newsUIRect.sizeDelta; newsUISize.x += growValueXPer1FrameSpeed; newsUISize.y += growValueYPer1FrameSpeed; newsUIRect.sizeDelta = newsUISize; // 移動量を更新 nowDistance += moveValuePer1FrameSpeed; // 規定距離以上移動したなら if (nowDistance > distance) { // X方向のみ位置を修正 var rectPos = newsUIRect.localPosition; rectPos.x = targetPos.x; newsUIRect.localPosition = rectPos; // サイズを修正 newsUIRect.sizeDelta = sizeMax; // EntryStateを終了 newsUI.ShowStart(); } }