Example #1
0
    /// <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();
        }
    }