Esempio n. 1
0
    /// <summary>
    /// 火球攻撃
    /// </summary>
    IEnumerator IEUpdateFireBreath(int Count)
    {
        const float MaxTime = 0.7f;
        var         fire    = ResourceManager.Instance.Get <BossFire>(ConstDirectry.DirPrefabsEnemy, ConstActionHitData.ActionBossFire);

        var plObjs          = PlayerManager.instance.PlayersObject;
        int AlreadyAttacked = 0;

        Count = Count >= plObjs.Count ? plObjs.Count : Count;

        for (int i = 0; i < Count; i++)
        {
            BossControll.SetState(BossAnimationController.EnemyState.Fire);
            int plNum = GetRandomPlayer(AlreadyAttacked);
            yield return(new WaitForSeconds(MaxTime));

            var f = Instantiate(fire);
            f.StartFire(transform.position, plObjs[plNum].transform.position);

            AlreadyAttacked |= 1 << plNum;

            yield return(new WaitForSeconds(MaxTime / 2));
        }

        BossControll.SetState(BossAnimationController.EnemyState.Wait);
    }
Esempio n. 2
0
    /// <summary>
    /// しっぽ攻撃
    /// </summary>
    IEnumerator IEUpdateTaleAttack()
    {
        const float MaxTime = 3f;

        yield return(new WaitForSeconds(MaxTime));

        BossControll.SetState(BossAnimationController.EnemyState.Wait);
    }
Esempio n. 3
0
    //========================================================================================
    //                                    行動開始系
    //========================================================================================


    /// <summary>
    /// 次のエリアへ移動し始める
    /// </summary>
    void StartMoveNext(Transform trs)
    {
        if (ProduceCort != null)
        {
            StopCoroutine(ProduceCort);
        }
        ProduceCort = IEUpdateMoveNextArea(trs);
        StartCoroutine(ProduceCort);

        BossControll.SetState(BossAnimationController.EnemyState.Jump);
    }
Esempio n. 4
0
    public void AttemptedKill(string arg0)
    {
        GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy");
        for (int x = 0; x < enemies.Length; x++)
        {
            SlimeControl slime = enemies[x].GetComponent <SlimeControl>();

            WraithControl wraith = enemies[x].GetComponent <WraithControl>();
            BossControll  boss   = enemies[x].GetComponent <BossControll>();
            try
            {
                if (arg0.Equals(wraith.ReturnWord()))
                {
                    wraith.Die();
                    KillEnemy();
                }
            }
            catch { }
            try
            {
                if (arg0.Equals(slime.ReturnWord()))
                {
                    slime.Die();
                    KillEnemy();
                }
            }
            catch { }
            try
            {
                List <string> words = boss.ReturnWord();
                for (int count = 0; count < words.Count; count++)
                {
                    if (arg0.Equals(words[count]))
                    {
                        if (words.Count == 1)
                        {
                            boss.Die();
                            KillEnemy();
                            bossDead = true;
                        }
                        else
                        {
                            words.RemoveAt(count);
                            boss.recieveRemainingWords(words);
                        }
                    }
                }
            }
            catch { }
        }
    }
Esempio n. 5
0
    //========================================================================================
    //                                    IEnumerater系
    //========================================================================================



    /// <summary>
    /// 次のエリアへ移動する
    /// </summary>
    IEnumerator IEUpdateMoveNextArea(Transform trans)
    {
        // 位置計算系
        Vector3Complession compPos = new Vector3Complession();

        compPos.Initialize(transform.position, trans.position);

        float Height = 5f;

        // 角度計算系
        QuaternionComplession compQt = new QuaternionComplession();
        {
            var startQt = Quaternion.LookRotation(transform.forward);
            var endQt   = Quaternion.LookRotation((City.Instance.transform.position - trans.position).normalized);
            compQt.Initialize(startQt, endQt);
        }

        const float     MaxTime = 1.5f;
        TimeComplession time    = new TimeComplession(MaxTime);

        while (true)
        {
            time.TimeUpdate();

            if (time.IsEnd)
            {
                break;
            }

            float   rate = (time.Rate);
            Vector3 pos  = compPos.CalcPosition(rate);
            pos.y = Height * JumpCurve.Evaluate(rate);
            transform.position = pos;
            transform.rotation = compQt.Slerp(rate);

            yield return(null);
        }

        transform.position = compPos.CalcPosition(1f);
        transform.rotation = compQt.Slerp(1f);

        BossControll.SetState(BossAnimationController.EnemyState.Wait);
    }
Esempio n. 6
0
    /// <summary>
    /// しっぽ攻撃開始
    /// </summary>
    void StartTalePushOff()
    {
        if (ProduceCort != null)
        {
            StopCoroutine(ProduceCort);
        }
        ProduceCort = IEUpdateTaleAttack();
        StartCoroutine(ProduceCort);

        // 右か左かチェック
        if (IsLeftCheckTalePushOff())
        {
            BossControll.SetState(BossAnimationController.EnemyState.LeftTale);
        }
        else
        {
            BossControll.SetState(BossAnimationController.EnemyState.RightTale);
        }
    }