Example #1
0
    private void Awake()
    {
        enemyMain   = GetComponent <EnemyMain>();
        aimAnims    = GetComponent <IAimShootAnims>();
        aimingShoot = GetComponent <AimingShoot>();

        SetStateNormal();
    }
Example #2
0
    // === コード(Monobehaviour基本機能の実装) ================
    void FixedUpdate()
    {
        var activeEnemyMainList = new List <EnemyMain>();

        // カメラに写っている敵を検索
        GameObject[] enemyList = GameObject.FindGameObjectsWithTag("Enemy");
        if (enemyList == null)
        {
            return;
        }
        foreach (GameObject enemy in enemyList)
        {
            //Debug.Log (string.Format(">>> obj Name {0} position {1}",enemy.name,enemy.transform.position));
            EnemyMain enemyMain = enemy.GetComponent <EnemyMain> ();
            if (enemyMain != null)
            {
                if (enemyMain.combatAIOerder && enemyMain.cameraEnabled)
                {
                    activeEnemyMainList.Add(enemyMain);
                }
            }
            else
            {
                Debug.LogWarning(string.Format("CombatAI : EnemyMain null : {0} {1}", enemy.name, enemy.transform.position));
            }
        }

        // 攻撃する敵を抑制
        int i = 0;

        foreach (EnemyMain enemyMain in activeEnemyMainList)
        {
            if (i < freeAIMax)
            {
                // そのまま自由に行動させる
            }
            else
            if (i < freeAIMax + blockAttackAIMax)
            {
                // 攻撃を抑制する
                if (enemyMain.aiState == ENEMYAISTS.RUNTOPLAYER)
                {
                    enemyMain.SetCombatAIState(ENEMYAISTS.WAIT);
                }
            }
            else
            {
                // 行動を停止する
                if (enemyMain.aiState != ENEMYAISTS.WAIT)
                {
                    enemyMain.SetCombatAIState(ENEMYAISTS.WAIT);
                }
            }
            i++;
        }

        //Debug.Log(string.Format(">>> Combat AI {0}",i));
    }
Example #3
0
    private void Awake()
    {
        enemyMain     = GetComponent <EnemyMain>();
        characterBase = GetComponent <CharacterAim_Base>();
        aimAnims      = GetComponent <IAimShootAnims>();
        aimingShoot   = GetComponent <AimingShoot>();

        SetStateNormal();
    }
Example #4
0
 private void Awake()
 {
     enemyList.Add(this);
     EnemyMain = GetComponent <EnemyMain>();
     state     = State.Normal;
     healthBar = new World_Bar(transform, new Vector3(0, 10), new Vector3(10, 1.3f), Color.grey, Color.red, 1f, 10000, new World_Bar.Outline {
         color = Color.black, size = .5f
     });
 }
Example #5
0
    void FixedUpdate()
    {
        var activeEnemyMainList = new List <EnemyMain>();

        // ค้นหา enemy ที่อยู่หน้ากล้อง (มองเห็น) แล้วบันทึกลงใน enemyList
        GameObject[] enemyList = GameObject.FindGameObjectsWithTag("Enemy");
        if (enemyList == null)
        {
            return;
        }
        foreach (GameObject enemy in enemyList)
        {
            EnemyMain enemyMain = enemy.GetComponent <EnemyMain> ();
            if (enemyMain != null)
            {
                if (enemyMain.combatAIOerder && enemyMain.cameraEnabled)
                {
                    activeEnemyMainList.Add(enemyMain);
                }
            }
            else
            {
                Debug.LogWarning(string.Format("CombatAI : EnemyMain null : {0} {1}", enemy.name, enemy.transform.position));
            }
        }

        // คอนโทรล enemy แต่ละตัวที่กำลังโจมตีอยู่
        int i = 0;

        foreach (EnemyMain enemyMain in activeEnemyMainList)
        {
            if (i < freeAIMax)
            {
                // ปล่อยไปตามโปรแกรม
            }
            else
            if (i < freeAIMax + blockAttackAIMax)
            {
                // กลุ่มนี้คุมหน่อย
                if (enemyMain.aiState == ENEMYAISTS.RUNTOPLAYER)
                {
                    enemyMain.SetCombatAIState(ENEMYAISTS.WAIT);
                }
            }
            else
            {
                // ส่วนที่เหลือให้หยุดเลย
                if (enemyMain.aiState != ENEMYAISTS.WAIT)
                {
                    enemyMain.SetCombatAIState(ENEMYAISTS.WAIT);
                }
            }
            i++;
        }

        //Debug.Log(string.Format(">>> Combat AI {0}",i));
    }
Example #6
0
    void FixedUpdate()
    {
        // var? javascript?
        var activeEnemyMainList = new List <EnemyMain>();


        GameObject[] enemyList = GameObject.FindGameObjectsWithTag("Enemy");

        if (enemyList == null)
        {
            return;
        }

        foreach (GameObject enemy in enemyList)
        {
            EnemyMain enemyMain = enemy.GetComponent <EnemyMain>();

            if (enemyMain != null)
            {
                if (enemyMain.combatAIOrder && enemyMain.cameraEnabled)
                {
                    activeEnemyMainList.Add(enemyMain);
                }
            }
            else
            {
            }
        }


        //공격하는 적을 억제한다
        int i = 0;

        foreach (EnemyMain enemyMain in activeEnemyMainList)
        {
            if (i < freeAIMax)
            {
                // 자유롭게 공격
            }
            else if (i < freeAIMax + blockAttackAIMax)
            {
                if (enemyMain.aiState == ENEMYAISTS.RUNTOPLAYER)
                {
                    enemyMain.SetCombatAIState(ENEMYAISTS.WAIT);
                }
            }
            else
            {
                if (enemyMain.aiState != ENEMYAISTS.WAIT)
                {
                    enemyMain.SetCombatAIState(ENEMYAISTS.WAIT);
                }
            }

            i++;
        }
    }
Example #7
0
    public void DestroyEnemy(EnemyMain _enemy, bool _killed)
    {
        m_enemies.Remove(_enemy);
        Destroy(_enemy.gameObject);

        if (_killed)
        {
            AddScore(10);
        }
    }
Example #8
0
    private void Awake()
    {
        enemyMain     = GetComponent <EnemyMain>();
        characterBase = GetComponent <Character_Base>();

        aimTransform = transform.Find("Aim");

        SetStateNormal();
        HideAim();
    }
Example #9
0
    // Update is called once per frame
    void Update()
    {
        shoot.loop = false;
        int layerMask = 1 << 9;

        Debug.DrawRay(camera.transform.position, camera.transform.forward, Color.red);
        if (Input.GetButtonDown("Fire1") && FindObjectOfType <PlayerMains>().Ammo > 0)
        {
            FindObjectOfType <PlayerMains>().ammo_cap -= 1;
            shoot.Play();;
            // Debug.Log(FindObjectOfType<PlayerMains>().Ammo);
            if (Physics.Raycast(camera.transform.position, camera.transform.forward, out hit, range, layerMask))
            {
                EnemyMain target = hit.transform.GetComponent <EnemyMain>();
                if (target != null)
                {
                    target.TakeDamage(damage);
                }
                Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
                // Debug.Log(hit.collider.name);
            }
        }
    }
Example #10
0
    // Update is called once per frame
    void Update()
    {
        m_tempDistance = 60f;
        foreach (EnemyMain _enemy in GameState.instance.m_enemies)
        {
            if (m_tempDistance > _enemy.m_transform.position.z - m_transform.position.z)
            {
                m_tempDistance = _enemy.m_transform.position.z - m_transform.position.z;
                m_target       = _enemy;
            }
        }

        m_relativePos        = m_target.transform.position - m_transform.position;
        m_rotation           = Quaternion.LookRotation(m_relativePos);
        m_transform.rotation = m_rotation;

        if (m_attacktimer <= 0)
        {
            Instantiate(m_bullet, m_transform.position, m_transform.rotation);
            m_attacktimer = Random.Range(200, 300);
        }

        m_attacktimer--;
    }
Example #11
0
	void Awake () {
		// EnemyMain을 검색
		enemyMain = GetComponentInParent<EnemyMain> ();
	}
 private void Awake()
 {
     enemyMain = GetComponent <EnemyMain>();
 }
Example #13
0
 public void HitEnemy(EnemyMain _enemy, float _damage)
 {
     _enemy.ChangeHealth(_damage);
     Debug.Log("Enemy was hit!");
 }
Example #14
0
 void Awake()
 {
     // EnemyMainを検索
     enemyMain = GetComponentInParent <EnemyMain> ();
 }
Example #15
0
 private void Awake()
 {
     gameObject.SetActive(false);
     enemyMain = GetComponent <EnemyMain>();
 }
    static void ColliderGizmoDraw(GameObject go, GizmoType gt)
    {
        if (!debugViewEnabled)
        {
            return;
        }

        if (go.tag == "Player")
        {
            // Scaler
            for (int x = -10; x < 10; x++)
            {
                Vector3 vecA = go.transform.position + Vector3.left * x;
                Vector3 vecB = vecA + Vector3.up;
                Gizmos.color = (Mathf.Abs(x) < 5) ? Color.red : Color.white;
                Gizmos.DrawLine(vecA, vecB);
            }
            for (int x = -10; x < 10; x++)
            {
                Vector3 vecA = go.transform.position + Vector3.up * x;
                Vector3 vecB = vecA + Vector3.left;
                Gizmos.color = (Mathf.Abs(x) < 5) ? Color.red : Color.white;
                Gizmos.DrawLine(vecA, vecB);
            }
        }
        else
        if (go.tag == "Enemy")
        {
            // AI Status
            Gizmos.color = Color.red;
            Gizmos.DrawCube(go.transform.position, new Vector3(0.1f, 0.1f, 0.1f));
            GUIStyle style = new GUIStyle();
            style.active.textColor  = Color.red;
            style.normal.textColor  = Color.red;
            style.hover.textColor   = Color.red;
            style.focused.textColor = Color.red;

            EnemyMain em = go.GetComponent <EnemyMain>();
            if (em == null)
            {
                return;
            }

            if (em.cameraEnabled)
            {
                Handles.Label(go.transform.position,
                              string.Format("{0} {1} {2}",
                                            em.aiState,
                                            em.GetComponent <EnemyController>().grounded,
                                            em.GetDistanePlayer()));
            }

            // Dog Pile
            Gizmos.color = Color.red;
            StageObject_DogPile[] dogPileList = GameObject.FindObjectsOfType <StageObject_DogPile>();
            foreach (StageObject_DogPile dogPile in dogPileList)
            {
                foreach (GameObject enemy in dogPile.enemyList)
                {
                    if (go == enemy)
                    {
                        Gizmos.DrawLine(go.transform.position, dogPile.transform.position);
                        return;
                    }
                }
            }
        }
    }
Example #17
0
        internal void Process(ApiInfo rpInfo, BattleStage rpFirstStage = null)
        {
            var rData = rpInfo.Data as RawBattleBase;
            var rCombinedFleetData = rData as IRawCombinedFleet;

            FriendAndEnemy = new BattleParticipantSnapshot[rCombinedFleetData == null ? 12 : 24];

            for (var i = 1; i < rData.CurrentHPs.Length; i++)
            {
                if (rData.MaximumHPs[i] != -1)
                {
                    FriendAndEnemy[i - 1] = new BattleParticipantSnapshot(rData.MaximumHPs[i], rData.CurrentHPs[i]);
                }
            }

            FriendMain = FriendAndEnemy.Take(6).TakeWhile(r => r != null).ToArray();
            for (var i = 0; i < FriendMain.Count; i++)
            {
                FriendMain[i].Participant = Owner.Participants.FriendMain[i];
            }

            EnemyMain = FriendAndEnemy.Skip(6).TakeWhile(r => r != null).ToArray();
            for (var i = 0; i < EnemyMain.Count; i++)
            {
                EnemyMain[i].Participant = Owner.Participants.EnemyMain[i];
            }

            if (rCombinedFleetData != null)
            {
                BattleParticipantSnapshot[] rFriendAndEnemyEscort;

                if (rpFirstStage == null)
                {
                    rFriendAndEnemyEscort = rCombinedFleetData.EscortFleetCurrentHPs.Zip(rCombinedFleetData.EscortFleetMaximumHPs,
                                                                                         (rpCurrent, rpMaximum) => rpMaximum != -1 ? new BattleParticipantSnapshot(rpMaximum, rpCurrent) : null).Skip(1).ToArray();
                }
                else
                {
                    IEnumerable <BattleParticipantSnapshot> rFriendEscort = rpFirstStage.FriendEscort;
                    if (rFriendEscort == null)
                    {
                        rFriendEscort = Enumerable.Repeat <BattleParticipantSnapshot>(null, 6);
                    }

                    IEnumerable <BattleParticipantSnapshot> rEnemyEscort = rpFirstStage.EnemyEscort;
                    if (rEnemyEscort == null)
                    {
                        rEnemyEscort = Enumerable.Repeat <BattleParticipantSnapshot>(null, 6);
                    }

                    rFriendAndEnemyEscort = rFriendEscort.Concat(rEnemyEscort).Select(r => r != null ? new BattleParticipantSnapshot(r.Maximum, r.Current) : null).ToArray();
                }

                if (rFriendAndEnemyEscort[0] != null)
                {
                    FriendEscort = rFriendAndEnemyEscort.Take(6).TakeWhile(r => r != null).ToArray();

                    for (var i = 0; i < FriendEscort.Count; i++)
                    {
                        FriendEscort[i].Participant = Owner.Participants.FriendEscort[i];
                        FriendAndEnemy[i + 12]      = FriendEscort[i];
                    }
                }

                if ((rpFirstStage == null && rFriendAndEnemyEscort.Length > 6) || (rpFirstStage != null && rpFirstStage.EnemyEscort != null))
                {
                    EnemyEscort = rFriendAndEnemyEscort.Skip(6).ToArray();

                    for (var i = 0; i < EnemyEscort.Count; i++)
                    {
                        EnemyEscort[i].Participant = Owner.Participants.EnemyEscort[i];
                        FriendAndEnemy[i + 18]     = EnemyEscort[i];
                    }
                }
            }

            if (FriendEscort == null)
            {
                Friend = FriendMain;
            }
            else
            {
                Friend = FriendMain.Concat(FriendEscort).ToArray();
            }

            if (EnemyEscort == null)
            {
                Enemy = EnemyMain;
            }
            else
            {
                Enemy = EnemyMain.Concat(EnemyEscort).ToArray();
            }

            foreach (var rPhase in Phases)
            {
                rPhase.Process();
            }

            if (!Owner.IsPractice)
            {
                foreach (var rSnapshot in Friend)
                {
                    var rParticipant = (FriendShip)rSnapshot.Participant;
                    if (rSnapshot.State == BattleParticipantState.HeavilyDamaged && rParticipant.EquipedEquipment.Any(r => r.Info.Type == EquipmentType.DamageControl))
                    {
                        rParticipant.IsDamageControlConsumed = false;
                        rParticipant.IsDamageControlVisible  = true;
                    }
                }
            }
        }
Example #18
0
 // Use this for initialization
 void Start()
 {
     enemyMain = GetComponentInParent<EnemyMain> ();
 }
Example #19
0
    private void Start()
    {
        navMeshAgent = GetComponent<NavMeshAgent>();
        enemy = GetComponent<EnemyMain>();
        viewStartTransform = transform.FindChild("ViewStart");

        deadZone *= Mathf.Deg2Rad;
    }