Beispiel #1
0
    // to に向かって今の位置から t 秒で進む
    // 速度調整するときは t を調整すれば良い
    public IEnumerator move(Vector3 to, float t)
    {
        float buffer = 0f; // getIntervalに渡すやつ

        // 動きが終わるまでは while から抜けないこと
        while (true)
        {
            // 各オブジェクトを目標位置に動かす
            for (int i = 0; i < geneSize; i++)
            {
                gameObjects[i].GetComponent <AMElement>().moveWith(to + i * (new Vector3(cubeSize, 0, 0)), t);
            }
            // 目的地にいけてるなら終了フラグを立てる
            if (gameObjects[0].GetComponent <AMElement>().progress == 1)
            {
                for (int i = 0; i < geneSize; i++)
                {
                    gameObjects[i].GetComponent <AMElement>().progress = 0;
                }
                Debug.Log("finish!");
                yield break;
            }
            yield return(new WaitForSeconds(AMCommon.getInterval(interval, ref buffer)));
        }
    }
Beispiel #2
0
    // 配列で指定されたオブジェクトを t 秒間点滅させる
    public IEnumerator blink(int[] v, float t)
    {
        if (v == null)
        {
            yield break;
        }
        float buffer = 0f; // getIntervalに渡すやつ

        while (true)
        {
            for (int i = 0; i < v.Length; i++)
            {
                gameObjects[v[i]].GetComponent <AMElement>().blinkWith(t);
            }
            // 点滅が終了したら終了フラグを立てる
            if (gameObjects[v[0]].GetComponent <AMElement>().progress == 1)
            {
                for (int i = 0; i < v.Length; i++)
                {
                    gameObjects[v[i]].GetComponent <AMElement>().progress = 0;
                }
                Debug.Log("finish!");
                yield break;
            }
            // 10 は適当
            yield return(new WaitForSeconds(AMCommon.getInterval(10 * interval, ref buffer)));
        }
    }
Beispiel #3
0
    // 交差専用
    // 同時に複数の GenePieces と頭を自然消滅させる
    private IEnumerator fadeOut(GameObject face, GameObject[] gps)
    {
        float fadeTime          = 0.2f / vp.playSpeed;
        float currentRemainTime = fadeTime;
        float interval          = AMCommon.interval;
        int   sz     = gps.Length;
        float buffer = 0f; // getIntervalに渡すやつ

        while (true)
        {
            currentRemainTime -= interval;
            // Debug.Log(currentRemainTime);
            if (currentRemainTime <= 0f)
            {
                Destroy(face);
                for (int i = 0; i < sz; i++)
                {
                    gps[i].GetComponent <AMGenePieces>().delete();
                    Destroy(gps[i]);
                }
                yield break;
            }
            float alpha = currentRemainTime / fadeTime;
            face.GetComponent <AMElement>().setAlpha(alpha);
            for (int i = 0; i < sz; i++)
            {
                gps[i].GetComponent <AMGenePieces>().setAlpha(alpha);
            }
            yield return(new WaitForSeconds(AMCommon.getInterval(interval, ref buffer)));
        }
    }
Beispiel #4
0
    // オブジェクトを t 秒の間点滅させる
    public IEnumerator blink(float t)
    {
        float buffer = 0f; // getIntervalに渡すやつ

        while (true)
        {
            GetComponent <Renderer>().enabled = !GetComponent <Renderer>().enabled;
            blinkElapsed += 10 * interval;
            if (blinkElapsed > t)
            {
                blinkElapsed = 0;
                GetComponent <Renderer>().enabled = true;
                yield break;
            }
            else
            {
                yield return(new WaitForSeconds(AMCommon.getInterval(10 * interval, ref buffer)));
            }
        }
    }
Beispiel #5
0
    // to に向かって今の位置から t 秒で進む
    // 速度調整するときは t を調整すれば良い
    // 単体で動かす場合はこちらを使う
    // AMGroup に動くのを任せる場合は moveWith を使う
    public IEnumerator move(Vector3 to, float t, bool mode) // mode false: Linear, true: Nonlinear
    {
        if (t == 0)
        {
            transform.position = to;
            yield break;
        }
        float buffer = 0f; // getIntervalに渡すやつ

        while (true)
        {
            // 目的地にいけてるなら終了フラグを立てる
            if (mode ? moveWithNonlinear(to, t) : moveWithLinear(to, t))
            {
                progress           = 1;
                transform.position = to; // 行き過ぎを修正 (cexen)
                yield break;
            }
            yield return(new WaitForSeconds(AMCommon.getInterval(interval, ref buffer)));
        }
    }