Пример #1
0
    /// <summary>
    /// カメラを動かすコルーチン
    /// </summary>
    /// <returns></returns>
    IEnumerator MoveCameraCoruetine(StoryPageData data)
    {
        pointCount++;
        IsMove = true;

        //目標の座標
        var endPos = data.points[pointCount].pos;

        //目標座標までの距離の計算
        var camPos2D   = (Vector2)camera.transform.position;
        var endDistVec = endPos - camPos2D;
        var endDist    = endDistVec.magnitude;

        //移動方向の計算
        var dir = endDistVec.normalized;

        //総移動距離
        float totalDist = 0.0f;

        //最初のカメラの描画サイズ
        var beginSize = camera.orthographicSize;

        //最終的なカメラの描画サイズ
        var endSize = data.points[pointCount].size;

        //カメラの変動する描画サイズ
        var diffSize = endSize - beginSize;

        while (true)
        {
            yield return(null);

            //今フレームの移動距離
            float movDist = cameraSpeed * Time.deltaTime;

            //カメラを移動させる
            camera.transform.position += (Vector3)dir * movDist;
            //camera.transform.position

            //移動させた分だけ移動した距離に加算
            totalDist += movDist;
            //Debug.Log("総移動距離 " + totalDist );

            //カメラサイズの変更
            camera.orthographicSize = beginSize + (diffSize * totalDist / endDist);

            //終了条件
            if (totalDist >= endDist)
            {
                camera.transform.position = new Vector3(endPos.x, endPos.y, -1f);
                camera.orthographicSize   = endSize;
                break;
            }
        }

        IsMove = false;
    }
Пример #2
0
    //
    IEnumerator MovePageCoroutine(StoryPageData data)
    {
        if (pointCount < data.points.Length - 1 && IsMove == false)
        {
            yield return(StartCoroutine(MoveCameraCoruetine(data)));
        }

        while (pointCount < data.points.Length - 1)
        {
            yield return(0);

            if (Input.GetMouseButtonDown(0))
            {
                if (pointCount < data.points.Length - 1 && IsMove == false)
                {
                    yield return(StartCoroutine(MoveCameraCoruetine(data)));
                }
            }
        }
        Debug.Log("ページ終了" + data.name);
        pointCount = -1;
    }