Пример #1
0
    IEnumerator Launch()
    {
        startTime = Time.time;

        specData.Recalculation();
        //Debug.Log(specData.GetMass());
        RocketBody2D.mass = specData.GetMass();

        timeTemp    = 0.0f;
        thrustForce = specData.GetThrustForce();
        thrustTime  = specData.GetBurningTime();

        RocketBody2D.gravityScale = specData.GetGravity() / 9.8f;

        ScoreData.AddLaunchNumber();
        WaterJet.SetActive(true);

        //  Debug.Log(startTime);
        Vector3 ScaleW  = Water.transform.localScale;
        float   posTemp = 0.0f;
        float   posMax  = ScaleW.y;

        WaterJetSound.PlayOneShot(WaterJetSound.clip);

        if (LancherForce > 0.0f)
        {
            //RocketBody2D.AddForce(RocketBody2D.transform.up * LancherForce, ForceMode2D.Impulse);
            StartCoroutine("LauncherAddForce");


            LancherForce = 0.0f;
        }

        while (thrustTime >= timeTemp)
        {
            timeTemp = Time.time - startTime;

            // ロケット発射

            RocketBody2D.AddForce(RocketBody2D.transform.up * thrustForce);



            posTemp  = posMax * (thrustTime - timeTemp) / thrustTime;
            ScaleW.y = posTemp;

            Water.transform.localScale = ScaleW;

            yield return(null);     //
        }

        // メインエンジン燃焼終了後
        WaterJet.SetActive(false);

        if (Stage >= 1)   // 多段式でまだ残っていたら、燃料再充填
        {
            ScaleW.y = posMax;
            Water.transform.localScale = ScaleW;
        }
        else
        {
            ScaleW.y = 0.0f;
            Water.transform.localScale = ScaleW;
        }
    }