Example #1
0
    private bool m_IsParalysis = false;     // 麻痺しているか(デフォルトはfalse)

    // Use this for initialization
    void Start()
    {
        m_Rigidbody         = GetComponent <Rigidbody>();
        m_Agent             = GetComponent <NavMeshAgent>();
        m_Agent.destination = new Vector3(0.0f, 0.0f, 0.0f);

        // 追従目標を指定
        SetTarget();
        m_State = Enemy2State_New.FollowPlayer;
    }
Example #2
0
    // Update is called once per frame
    void Update()
    {
        // プレイヤーが合体中・分離中でなければ
        if (GameManager.Instance.m_PlayMode != PlayMode.Combine && GameManager.Instance.m_PlayMode != PlayMode.Release && GameManager.Instance.m_PlayMode != PlayMode.NoPlay)
        {
            // 麻痺していなければ
            if (!m_IsParalysis)
            {
                // プレイヤーに追従中
                if (m_State == Enemy2State_New.FollowPlayer)
                {
                    // プレイヤーが射程内にいれば攻撃
                    if (IsPlayerInRange())
                    {
                        m_State = Enemy2State_New.Attack;
                    }
                }
                // プレイヤーに攻撃
                else if (m_State == Enemy2State_New.Attack)
                {
                    if (m_AttackCount >= m_AttackInterval)
                    {
                        Attack();
                    }

                    // プレイヤーが射程内にいなければ、移動を再開
                    if (!IsPlayerInRange())
                    {
                        m_State = Enemy2State_New.FollowPlayer;
                    }
                }
            }

            // 一定間隔で追従目標を変更
            if (m_ChangeTargetCount >= m_ChangeTargetInterval)
            {
                SetTarget();
            }

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

            // 目標変更カウンター
            ++m_ChangeTargetCount;
        }

        // 麻痺カウンター
        --m_ParalysisCount;
        // 麻痺時間終了
        if (m_ParalysisCount <= 0)
        {
            m_IsParalysis = false;
        }
    }