Esempio n. 1
0
    private int m_EntryTime;                                // 登場モーション時間

    // Use this for initialization
    void Start()
    {
        m_Rigidbody                = GetComponent <Rigidbody>();    // Rigidbodyを取得
        m_NavMeshAgent             = GetComponent <NavMeshAgent>(); // NavMeshAgentを取得
        m_NavMeshAgent.destination = transform.position;            // 登場直後はしばらく移動しない
        m_Animator = GetComponentInChildren <Animator>();           // Animatorを取得

        // 追従目標を指定
        SetTarget();
        m_State = EnemyC_State_v2.Entry;
    }
Esempio n. 2
0
    // 接触判定
    public void OnTriggerEnter(Collider other)
    {
        // 電撃を受けると麻痺
        if (other.name == "Cylinder")
        {
            m_State          = EnemyC_State_v2.Paralysis;
            m_ParalysisCount = 0;
        }

        // ロケットパンチを受けると…
    }
Esempio n. 3
0
    // Update is called once per frame
    void Update()
    {
        // プレイヤーが合体中・分離中でなければ
        if (GameManager.Instance.m_PlayMode != PlayMode.Combine && GameManager.Instance.m_PlayMode != PlayMode.Release)
        {
            // 登場
            if (m_State == EnemyC_State_v2.Entry)
            {
                --m_EntryTime;

                // 通常状態に移行
                if (m_EntryTime <= 0)
                {
                    m_State = EnemyC_State_v2.Normal;
                }
            }
            // 通常状態
            else if (m_State == EnemyC_State_v2.Normal)
            {
                // プレイヤーに向ける
                LookAtPlayer();

                // プレイヤーに近すぎると後退
                if (IsPlayerNear() && m_Target != null)
                {
                    m_NavMeshAgent.destination = -m_Target.position;
                }

                // 攻撃
                if (m_AttackCount >= m_AttackInterval)
                {
                    // プレイヤーが見えると攻撃
                    if (CanSeePlayer())
                    {
                        Attack();
                    }
                }

                // 追従目標を変更
                if (m_ChangeTargetCount >= m_ChangeTargetInterval)
                {
                    SetTarget();
                }

                // 攻撃カウンター
                ++m_AttackCount;

                // 目標変更カウンター
                ++m_ChangeTargetCount;
            }
            // 被弾した場合
            else if (m_State == EnemyC_State_v2.Damage)
            {
                // のけぞり時間を加算
                ++m_DamageTimeCounter;
                if (m_DamageTimeCounter >= m_DamageTime)
                {
                    m_State = EnemyC_State_v2.Normal;
                }
            }
            // 麻痺中の場合
            else
            {
                // 麻痺時間を加算
                ++m_ParalysisCount;
                if (m_ParalysisCount >= m_ParalysisTime)
                {
                    m_State = EnemyC_State_v2.Normal;
                }
            }
        }
    }