void PlayChainSE(int chainCount)
    {
        switch (chainCount)
        {
        case 1:
        case 2:
        case 4:
        case 6:
            break;

        case 3:
            G20_SEManager.GetInstance().Play(G20_SEType.CHAIN1, Vector3.zero, false);
            break;

        case 5:
            G20_SEManager.GetInstance().Play(G20_SEType.CHAIN2, Vector3.zero, false);
            break;

        case 7:
            G20_SEManager.GetInstance().Play(G20_SEType.CHAIN3, Vector3.zero, false);
            break;

        default:
            G20_SEManager.GetInstance().Play(G20_SEType.CHAIN3, Vector3.zero, false);
            break;
        }
    }
    IEnumerator PlayCoroutine(int voiceNumber)
    {
        //// 改行処理
        //char[] c = { 'n' };

        //var _strs = serifuList[voiceNumber].Split(c);

        //serifuText.text = "";
        //for(int i = 0; i < _strs.Length; ++i )
        //{
        //    serifuText.text += _strs[i];
        //    if ( i < _strs.Length - 1 ) serifuText.text += "\n";
        //}

        G20_SEType seType = GetSEType((G20_VoiceType)voiceNumber);

        captionPerformer.StartPerformance(serifuList[voiceNumber], new G20_CaptionParam(0.5f, 0.4f, 0f));
        yield return(new WaitForSecondsRealtime(voiceDelayFromCaption));

        PlaySELimit(seType);
        float seLength             = G20_SEManager.GetInstance().GetClipLength(seType);
        float minLength            = 1.0f;
        float displayCaptionLength = Mathf.Max(minLength, seLength - 1.0f);

        yield return(new WaitForSeconds(displayCaptionLength));

        captionPerformer.StopPerformance();
    }
 void PlaySELimit(G20_SEType seType)
 {
     if (audioSource && audioSource.isPlaying)
     {
         audioSource.Stop();
     }
     audioSource = G20_SEManager.GetInstance().Play(seType, Vector3.zero, false);
 }
Exemplo n.º 4
0
 public override void Execute(Vector3 hit_point)
 {
     G20_SEManager.GetInstance().Play(ses[currentNum], hit_point);
     if (currentNum < ses.Length - 1)
     {
         currentNum++;
     }
 }
    public void DamageEffectSEEnemy(G20_Enemy enemy)
    {
        G20_EffectManager effMn = G20_EffectManager.GetInstance();
        G20_SEManager     seMn  = G20_SEManager.GetInstance();
        Vector3           pos   = enemy.Head.position;

        G20_EffectManager.GetInstance().Create(G20_EffectType.HIT_APPLE_HEAD, pos);
        G20_SEManager.GetInstance().Play(G20_SEType.HIT_HEAD, pos);
    }
 void DamageEffect()
 {
     //anim.CrossFadeInFixedTime("CameraYure", 0f);
     if (cameraShake)
     {
         cameraShake.Shake(G20_CameraShakeType.DOWNWARD, 0.2f, 6f, 0.8f);
     }
     G20_SEManager.GetInstance().Play(G20_SEType.PLAYER_DAMAGE, Vector3.zero, false);
 }
Exemplo n.º 7
0
 void SETimerUpdate()
 {
     flySETimer += Time.deltaTime;
     if (SETime <= flySETimer)
     {
         G20_SEManager.GetInstance().Play(G20_SEType.FLIGHTBOSS, stageBoss.transform.position);
         flySETimer = 0f;
     }
 }
Exemplo n.º 8
0
    IEnumerator TargetJump()
    {
        //体の向き回転
        Vector3 targetfront = distanceVec.normalized;

        targetfront.y = 0;
        for (float t = 0; t < rotationTime; t += AITime)
        {
            if (G20_GameManager.GetInstance().gameState != G20_GameState.INGAME)
            {
                //Debug.Log("インゲーム状態を抜けたのでAIを終了");
                yield break;
            }
            var newRotation = Quaternion.LookRotation(targetfront).eulerAngles;
            newRotation.x      = 0; //ずれ防止のため
            newRotation.z      = 0; //ずれ防止のため
            transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.Euler(newRotation), rotspeed);
            yield return(null);
        }

        yield return(null);

        if (!enemy.IsLife)
        {
            yield break;
        }
        //ジャンプモーション開始
        animPlayer.PlayAnimation(G20_AnimType.Jump);
        G20_SEManager.GetInstance().Play(G20_SEType.SMALL_APPLE_ATTACK, Vector3.zero, false);
        yield return(new WaitForSeconds(1.0f / enemy.anim.AnimSpeed));

        //放物線
        float hight = 0;

        while (G20_GameManager.GetInstance().gameState == G20_GameState.INGAME && transform.position.y >= -0.1f)
        {
            transform.position += (!enemy.IsLife ? -1 : 1) * transform.forward * Time.deltaTime * enemy.Speed;

            if (!enemy.IsLife && init_v > 0)
            {
                init_v = 0;
            }
            init_v -= gravity * Time.deltaTime * (!enemy.IsLife ? 4 : 1);
            hight  += init_v * Time.deltaTime;


            transform.position = new Vector3(transform.position.x, hight, transform.position.z);

            if (distance < attackRange)
            {
                // 走ってる途中で近くなったので終了
                yield break;
            }
            yield return(null);
        }
    }
    // 字幕表示なし
    // 再生中はBGM音量下げる
    public void PlayWithNoCaption(G20_VoiceType voiceNumber)
    {
        // 字幕表示しないボイス再生
        G20_SEType seType = GetSEType(voiceNumber);

        PlaySELimit(seType);
        float clipLength = G20_SEManager.GetInstance().GetClipLength(seType);

        G20_BGMManager.GetInstance().VolumeDown(clipLength);
    }
Exemplo n.º 10
0
    public G20_Enemy EnemyPop(G20_EnemyType enemyType, Vector3 position, G20_EnemyPopType popType = G20_EnemyPopType.RISE_UP)
    {
        // 敵のオブジェクト生成
        var ene = popEnemySelector.GetPopEnemy(enemyType);

        ene.transform.SetParent(transform.parent);

        G20_SEManager.GetInstance().Play(G20_SEType.SUMMON_APPLE, position + new Vector3(0, 0.02f, 0));
        // 出現演出
        switch (popType)
        {
        case G20_EnemyPopType.RISE_UP:
            //敵の召喚エフェクト生成(少し魔法陣を浮かす)
            G20_EffectManager.GetInstance().Create(G20_EffectType.SUMMON_APPLE, position + new Vector3(0, 0.02f, 0));
            ene.transform.position = position + new Vector3(0, riseUpDifY, 0);
            StartCoroutine(RiseUp(ene));
            break;

        case G20_EnemyPopType.WALK_FORWARD:
            G20_EffectManager.GetInstance().Create(G20_EffectType.SUMMON_APPLE_VERT, position);
            position.y             = 0f;
            ene.transform.position = position + new Vector3(0, 0, walkForwardDifZ);
            StartCoroutine(WalkForward(ene));
            break;
        }

        var enemy = ene.GetComponent <G20_Enemy>();

        //enemyのbuffを設定
        G20_EnemyBuff enemy_buff = null;

        if (onPopSpeedBuffValue != 0)
        {
            enemy_buff = new G20_SpeedBuff(enemy, 100.0f, onPopSpeedBuffValue);
        }

        if (enemy_buff != null)
        {
            enemy.AddBuff(enemy_buff);
        }
        // 敵情報保存
        G20_EnemyCabinet.GetInstance().RegisterEnemy(enemy);

        //敵情報破棄を敵が死んだときに実行
        enemy.OnDestroyAction += G20_EnemyCabinet.GetInstance().UnregisterEnemy;

        return(enemy);
    }
    private void OnCollisionEnter(Collision collision)
    {
        if (!isScoreCounted)
        {
            if (firstCollisionHItAction != null)
            {
                firstCollisionHItAction(eventArgInteger);
            }
            isScoreCounted = true;
        }

        if (playSECount < playSEMaxCount &&
            _rigidbody.velocity.sqrMagnitude > 1.0f)
        {
            G20_SEManager.GetInstance().Play(G20_SEType.APPLE_FALL, transform.position);
            playSECount++;
        }
    }
Exemplo n.º 12
0
 private void BattleSetUP()
 {
     Destroy(stageBoss.GetComponent <G20_HitReactionVoice>());
     Destroy(stageBoss.GetComponent <G20_HitCounterApple>());
     G20_SEManager.GetInstance().Play(G20_SEType.BARRIER_EXTINCTION, stageBoss.transform.position);
     breakProtectEffect.Play();
     stageBoss.recvDamageActions += (a, b) => StartCoroutine(NextGesslerMove());
     stageBoss.recvDamageActions += (a, b) => HitGesslerHirumi();
     stageBoss.recvDamageActions += (a, b) =>
     {
         PlayDamageVoice();
     };
     stageBoss.recvDamageActions += (a, b) =>
     {
         damageEffect.Play(true);
     };
     stageBoss.deathActions += (a, b) => player.GetComponent <G20_Player>().IsInvincible = true;
 }
Exemplo n.º 13
0
    IEnumerator ExplodeCoroutine(Vector3 point0, Vector3 point1, float radius)
    {
        var   colliders = Physics.OverlapCapsule(point0, point1, radius);
        float interval  = 0.09f;

        foreach (var col in colliders)
        {
            if (!col)
            {
                continue;
            }

            var hitDamage = col.GetComponent <G20_HitDamage>();

            if (!hitDamage)
            {
                continue;
            }

            var enemy     = hitDamage.Target as G20_Enemy;
            var effectPos = Vector3.zero;

            if (enemy)
            {
                // 対象がEnemyの場合
                effectPos = enemy.Head.position;
            }
            else
            {
                // 対象がEnemy以外の場合
                effectPos = col.transform.position;
            }

            // 実ダメージ処理
            hitDamage.Target.RecvDamage(hitDamage.Target.HP, G20_Unit.G20_DamageType.Player);

            // エフェクト・SE発生
            G20_EffectManager.GetInstance().Create(G20_EffectType.HIT_APPLE_HEAD, effectPos);
            G20_SEManager.GetInstance().Play(G20_SEType.HIT_HEAD, effectPos);

            // エフェクト・SE発生にわずかに間隔を空ける
            yield return(new WaitForSeconds(interval));
        }
    }
Exemplo n.º 14
0
    void SetDeathVoice()
    {
        G20_SEType deathSEType;

        if (gameObject.name.Contains("Human"))
        {
            deathSEType = (G20_SEType)Random.Range(
                (int)G20_SEType.APPLE_VOICE_NORMAL,
                (int)G20_SEType.APPLE_VOICE_NORMAL2 + 1);
            deathActions += (x, y) =>
                            G20_SEManager.GetInstance().Play(deathSEType, transform.position);
        }
        else if (gameObject.name.Contains("Small"))
        {
            deathSEType   = G20_SEType.APPLE_VOICE_SMALL;
            deathActions += (x, y) =>
                            G20_SEManager.GetInstance().Play(deathSEType, transform.position);
        }
    }
    public GameObject Create(Vector3 create_point)
    {
        if (maxBulletApple <= bulletCount)
        {
            return(null);
        }
        G20_SEManager.GetInstance().Play(G20_SEType.SUMMON_APPLE, create_point);
        var sa = G20_EffectManager.GetInstance().Create(G20_EffectType.SUMMON_APPLE_VERT, create_point);

        sa.transform.localScale *= 0.5f;
        var bulletObject = Instantiate(bulletApple);

        bulletObject.transform.position = create_point;
        bulletCount++;
        var ba = bulletObject.GetComponent <G20_BulletApple>();

        ba.deathActions += (a, b) => bulletCount--;
        ba.owner         = gessler;
        return(bulletObject);
    }
Exemplo n.º 16
0
 public override void Execute(Vector3 hit_point)
 {
     G20_SEManager.GetInstance().Play(seType, transform.position);
 }
Exemplo n.º 17
0
 public void PlaySE(int num)
 {
     G20_SEManager.GetInstance().Play((G20_SEType)num, Vector3.zero, false);
 }
Exemplo n.º 18
0
    IEnumerator ToIngameCoroutine()
    {
        // 演出中は弾の判定なし
        G20_BulletShooter.GetInstance().CanShoot = false;

        titleCanvas.SetActive(false);
        G20_BGMManager.GetInstance().FadeOut();
        var seForest = G20_SEManager.GetInstance().Play(G20_SEType.FOREST, Vector3.zero, false);

        yield return(new WaitForSeconds(isSkipPerformance ? 0.001f : 1f));

        //playerObj.GetComponent<Animator>().SetBool("zoomout", true);

        // 環境光は別のコルーチンで遷移
        StartCoroutine(LightSettingCoroutine());


        // プレイヤー後ずさり等のアニメーション開始
        gameRootAnim.CrossFade("ToIngame", 0f);

        yield return(new WaitForSeconds(5.5f));

        summonParticle.Play();
        yield return(new WaitForSeconds(0.7f));

        paramCanvas.SetActive(true);
        summonParticle.Stop();

        gesslerAnim.enabled = true;

        gesslerShootPerformer.gesslerAnim.PlayAnim(G20_GesslerAnimType.Attack);
        yield return(new WaitForSeconds(0.9f));

        yield return(new WaitForSeconds(0.6f));

        gesslerShootPerformer.gesslerAnim.PlayAnim(G20_GesslerAnimType.Taiki);

        // ゲスラーふわふわアニメーション開始

        // 最初のリンゴ召喚
        G20_StageManager.GetInstance().IngameStart();
        G20_StageManager.GetInstance().nowStageBehaviour.SetEnableUpdateCall(1);


        yield return(new WaitForSeconds(isSkipPerformance ? 0.001f : 1.5f));

        // セリフ再生と字幕表示
        //G20_VoicePerformer.GetInstance().Play(0);

        yield return(new WaitForSeconds(isSkipPerformance ? 0.001f : 0.5f));

        gameRootAnim.enabled = false;
        gesslerShootPerformer.gesslerAnim.PlayAnim(G20_GesslerAnimType.Taiki);

        // 戦闘開始
        G20_BulletShooter.GetInstance().CanShoot = true;
        gameState = G20_GameState.INGAME;
        G20_EnemyCabinet.GetInstance().AllEnemyAIStart();
        // 「SURVIVE!」表示
        uiTextSurvive.SetActive(true);
        // BGM
        G20_BGMManager.GetInstance().Play(G20_BGMType.INGAME_0);
        G20_SEManager.GetInstance().Fadeout(seForest);

        yield return(new WaitForSeconds(isSkipPerformance ? 0.001f : 5f));

        uiTextSurvive.SetActive(false);

        yield return(null);
    }