Exemplo n.º 1
0
    void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.tag != "Enemy")
        {
            return;
        }

        AIEnemy pEnemy = other.gameObject.GetComponent <AIEnemy>();

        if (pEnemy == null)
        {
            return;
        }

        Tuple <int, bool> Damage = Rule.BulletDamage(pAI.iPlayer, true);

        pEnemy.AddHP(-Damage.Item1, Damage.Item2);
        Statistics.pthis.RecordHit(ENUM_Damage.Pistol, Damage.Item1, true);

        if (Rule.GetWeaponLevel(ENUM_Weapon.Pistol) > 0)
        {
            if (!other.gameObject.GetComponent <Freeze>())
            {
                other.gameObject.AddComponent <Freeze>().FreezeNow();
            }
            else
            {
                other.gameObject.GetComponent <Freeze>().fTime = 2;
            }
        }
        Destroy(gameObject);
    }
Exemplo n.º 2
0
    // 存檔.
    public void Save()
    {
        int iCount = 0;

        foreach (KeyValuePair <GameObject, int> Itor in SysMain.pthis.Enemy)
        {
            if (Itor.Key)
            {
                AIEnemy EnemyTemp = Itor.Key.GetComponent <AIEnemy>();

                if (EnemyTemp && EnemyTemp.iHP > 0)
                {
                    SaveEnemy Temp = new SaveEnemy();
                    Vector3   Pos  = EnemyPos(Itor.Key.transform.localPosition);

                    Temp.iMonster = EnemyTemp.iMonster;
                    Temp.iHP      = EnemyTemp.iHP;
                    Temp.fPosX    = Pos.x;
                    Temp.fPosY    = Pos.y;

                    PlayerPrefs.SetString(GameDefine.szSaveEnemy + iCount, Json.ToString(Temp));
                    ++iCount;
                } //if
            }     //if
        }        //for

        PlayerPrefs.SetInt(GameDefine.szSaveEnemyCount, iCount);
    }
Exemplo n.º 3
0
    // ------------------------------------------------------------------
    void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.tag != "Enemy")
        {
            return;
        }

        AIEnemy pEnemy = other.gameObject.GetComponent <AIEnemy>();

        if (pEnemy == null)
        {
            return;
        }

        Tuple <int, bool> Damage = Rule.BulletDamage(pAI.iPlayer, true);

        pEnemy.AddHP(-Damage.Item1, false);
        Statistics.pthis.RecordHit(ENUM_Damage.Eagle, Damage.Item1, true);

        // 播放爆擊特效
        if (Damage.Item2)
        {
            if (Rule.GetWeaponLevel(ENUM_Weapon.Eagle) > 0)
            {
                pEnemy.HitSfx("G_HeadShot");
            }
            else
            {
                pEnemy.HitSfx("G_Crit");
            }
        }        //if

        Destroy(gameObject);
    }
Exemplo n.º 4
0
    void Update()
    {
        m_EnemyTime -= Time.deltaTime;

        if (m_EnemyTime <= 0)
        {
            if (m_EnemyCount < 10)
            {
                m_EnemyTime = Random.Range(0, 4f);
            }
            else if (m_EnemyCount >= 10 && m_EnemyCount < m_EnemyMax)
            {
                m_EnemyTime = Random.Range(0, 1.5f);
            }
            else
            {
                return;
            }
            Transform transformEnemy = (Transform)Instantiate(m_Enemy, m_transform.position, Quaternion.identity);
            //获取敌人脚本
            AIEnemy enemy = transformEnemy.GetComponent <AIEnemy>();
            //初始化敌人
            enemy.Init(this, 1);
            enemy.transform.SetParent(GameObject.Find("AllEnemy").transform);
        }
    }
Exemplo n.º 5
0
 private void Start()
 {
     _hp       = _life;
     _carEn    = _thisAI.GetComponent <AIEnemy>();
     _car      = _thisAI.GetComponent <AltCarMove>();
     _civilian = _thisAI.GetComponent <LilHum>();
 }
Exemplo n.º 6
0
    void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.tag != "Enemy")
        {
            return;
        }

        AIEnemy pEnemy = other.gameObject.GetComponent <AIEnemy>();

        if (pEnemy == null)
        {
            return;
        }

        Tuple <int, bool> Damage = Rule.BulletDamage(pAI.iPlayer, true);

        pEnemy.AddHP(-Damage.Item1, Damage.Item2);
        Statistics.pthis.RecordHit(ENUM_Damage.SUB, Damage.Item1, true);

        if (Rule.GetWeaponLevel(ENUM_Weapon.SUB) > 0)
        {
            GroundHurt(other.gameObject.transform.position, Rule.UpgradeWeaponSUB());
        }
        else
        {
            Destroy(gameObject);
        }
    }
    public void SelectWhichEnemyAIGoesFirst()
    {
        List <AIEnemy> activeEnemies = GetActiveUnitsFromDictionnary <AIEnemy>();

        if (activeEnemies.Count <= 0)
        {
            return;
        }
        AIEnemy unitWithMaxHp = activeEnemies[0];

        foreach (AIEnemy enemy in activeEnemies)
        {
            if (!enemy.isNotAffectedByCondition)
            {
                continue;
            }
            if (Globals.GV.PONDERATION * (unitWithMaxHp.unitData.stats.Hp) + (1 - Globals.GV.PONDERATION) * (unitWithMaxHp.unitData.stats.Ap) <
                Globals.GV.PONDERATION * (enemy.unitData.stats.Hp) + (1 - Globals.GV.PONDERATION) * (enemy.unitData.stats.Ap))
            {
                unitWithMaxHp = enemy;
            }
            //check own state and  Hp and which Enemy Player can do the most damage
        }
        unitWithMaxHp.IsItMyTurn = true;
        aiUnitSelectedEvent.Invoke(unitWithMaxHp);
    }
Exemplo n.º 8
0
    IEnumerator WaveAttacking(Wave wave)
    {
        if (bFinalWave)
        {
            wave.EnemyNum = 9999;
        }
        //spawn enemy
        for (int i = 0; i < wave.EnemyNum; i++)
        {
            yield return(new WaitForSeconds(wave.TimeBetweenSpawn / 2f));

            Transform tiletransform = m_MapGenerator.GetRandomAvailableTile();
            yield return(StartCoroutine(TileFlash(tiletransform)));

            AIEnemy newenemy = Instantiate(Enemy, tiletransform.position, Quaternion.identity);

            yield return(new WaitForSeconds(wave.TimeBetweenSpawn / 2f));
        }

        //Wait until all enemy killed
        while (true)
        {
            if (CurWaveFinished())
            {
                if (AudioManager.Instance != null)
                {
                    AudioManager.Instance.Play2DSound("LevelCompleted");
                }
                break;
            }
            yield return(null);
        }
    }
Exemplo n.º 9
0
    //public Player outPlayer;
    //public AIEnemy outAiEnemy;
    //public Stage outStage;

    public void TurnUpdate()
    {
        Player  player  = GameResources.Player;
        AIEnemy aiEnemy = GameResources.AIEnemy;
        Stage   stage   = GameResources.Stage;

        if (outIsEnemy == true)
        {
            transform.Translate(0, -1 * outMoveStep, 0);
        }
        else
        {
            transform.Translate(0, outMoveStep, 0);
        }

        // 상대 플레이어에게 데미지
        if (transform.localPosition.y <= 1 && outIsEnemy == true)
        {
            player.UpdateMovableDamage(damage);
            aiEnemy.RemoveUnit(GetComponent <Unit>());
        }
        else if (transform.localPosition.y > 8 && outIsEnemy == false)
        {
            aiEnemy.UpdateMovableDamage(damage);
            stage.RemoveUnit(GetComponent <Unit>());
        }
    }
Exemplo n.º 10
0
    void Update()
    {
        // if the GO is activated and I can spawn another enemy
        if (activate && enemiesSpawned.Count < maxEnemyToSpawn)
        {
            timer -= Time.deltaTime;

            // and the timer is over
            if (timer <= 0)
            {
                // I spawn an enemy around the spawnpoint
                Vector3 position = AIEnemy.GenerateRandomPosition(spawnPoint.position, 2, NavMesh.AllAreas);

                Instantiate(particleSpawnPrefab, position, Quaternion.identity);
                audioSource.PlayOneShot(spawnClip);

                // A spawned enemy don't have to drop gears
                GameObject e = Instantiate(enemyPrefab, position, Quaternion.identity);
                e.GetComponent <AIEnemy>().canDropItem = false;
                enemiesSpawned.Add(e);

                timer = timeBeforeSpawn;
            }
        }

        if (enemiesSpawned.Count > 0)
        {
            CheckToDestroy();
        }
    }
Exemplo n.º 11
0
    public override void TurnUpdate()
    {
        Transform tfUnitLayer = GameResources.TfUnitLayer;
        AIEnemy   aiEnemy     = GameResources.AIEnemy;
        Stage     stage       = GameResources.Stage;

        base.TurnUpdate();

        if (unitCreateTurn >= 0)
        {
            if (outIsEnemy)
            {
                GameObject newSlave = Instantiate(outObjSlave, tfUnitLayer);
                newSlave.transform.position = new Vector3(transform.position.x, transform.position.y); // 이미 생성된 Castle보다 Unit이 나중에 생성되어 TurnUpdate 영향을 받는다
                newSlave.SetActive(true);

                aiEnemy.AddUnit(newSlave.GetComponent <Unit>());
            }
            else
            {
                stage.CreateUnit(outObjSlave, new Vector3(transform.position.x, transform.position.y));
            }

            unitCreateTurn = 0;
        }
        else
        {
            unitCreateTurn++;
        }
    }
    //called when player is actually using the cyclone ability
    //spins player around and hits all enemies around them
    //player heals for every 3 enemies they hit
    private void UsingCyclone()
    {
        _currComboTime = (Time.time - _startComboTime) / _cycloneDuration;


        if (_currComboTime < 1)
        {
            if (_debugCyclone)
            {
                Debug.DrawLine(transform.position, transform.position + (transform.forward * _cycloneDetectionDistance));
            }

            if (Physics.Raycast(_sword.transform.position, _sword.transform.up, out hit, _cycloneDetectionDistance))
            {
                if (hit.collider.GetComponent <AIEnemy>())
                {
                    AIEnemy EnemyHit = hit.collider.GetComponent <AIEnemy>();

                    //Debug.Log("hit");

                    if (_enemyHit.Count > 0)
                    {
                        if (!CycloneAlreadyHitEnemy(EnemyHit))
                        {
                            if (EnemyHit.GotHit(_cycloneAttackDamage, transform.forward * _cycloneKnockBack, hit.point))
                            {
                                Debug.Log("cyclone hit");
                                _enemyHit.Add(EnemyHit);
                                ContinueCombo();
                                if (_enemyHit.Count > 2)
                                {
                                    _enemyHit = new List <AIEnemy>();
                                    Debug.Log("cyclone heal");
                                    _pStats.PHeal(_cycloneHeal);
                                }
                            }
                        }
                    }
                    else
                    {
                        if (EnemyHit.GotHit(_cycloneAttackDamage, transform.forward * _cycloneKnockBack, hit.point))
                        {
                            Debug.Log("cyclone hit");
                            ContinueCombo();
                            _enemyHit.Add(EnemyHit);
                        }
                    }
                }
            }
            transform.Rotate(Vector3.up, _cycloneSpinSpeed);
        }
        else
        {
            _currComboTime = 1;

            _myability = SpecialAbility.NONE;
            _sword.transform.localPosition = _swordReset;
            _enemyHit = new List <AIEnemy>();
        }
    }
Exemplo n.º 13
0
    private void SpawnNextEnemy(KeyValuePair <AIEnemy, string> tank)
    {
        string  enemyType = tank.Value;
        Vector3 spawnPosition;

        if (enemyType == "AITurret" || enemyType == "AIGunTurret" || enemyType == "RocketTurret")
        {
            int     randomPoint      = Mathf.RoundToInt(Random.Range(0, turretSpawnPoints.Length));
            Vector3 spawnPositionRaw = turretSpawnPoints[randomPoint].position;
            spawnPosition = new Vector3(spawnPositionRaw.x, 50f, spawnPositionRaw.z);
        }
        else
        {
            int     randomPoint      = Mathf.RoundToInt(Random.Range(0, spawnPoints.Length));
            Vector3 spawnPositionRaw = spawnPoints[randomPoint].position;
            spawnPosition = new Vector3(spawnPositionRaw.x, 50f, spawnPositionRaw.z);
        }

        currentAI.Remove(tank.Key);
        AIEnemy currentEnemy = Instantiate(enemiesToSpawn[nextEnemyIndex], spawnPosition, Quaternion.identity);

        currentAI.Add(currentEnemy, currentEnemy.tag);

        nextEnemyIndex++;
        if (nextEnemyIndex >= enemiesToSpawn.Length)
        {
            maxIndexReached = true;
        }
        timeUntilSpawn = spawnTime;
    }
Exemplo n.º 14
0
    void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.tag != "Enemy")
        {
            return;
        }

        AIEnemy pEnemy = other.gameObject.GetComponent <AIEnemy>();

        if (pEnemy == null)
        {
            return;
        }

        Tuple <int, bool> Damage = Rule.BulletDamage(pAI.iPlayer, FirstHit);

        pEnemy.AddHP(-Damage.Item1, Damage.Item2);
        Statistics.pthis.RecordHit(ENUM_Damage.Rifle, Damage.Item1, FirstHit);

        if (iCount <= 0)
        {
            Destroy(gameObject);
        }

        FirstHit = false;
        --iCount;
    }
Exemplo n.º 15
0
 public void EnemyDied(AIEnemy enemy)
 {
     if (enemyAis.Contains(enemy))
     {
         enemyAis.Remove(enemy);
     }
     CheckAllDead();
 }
Exemplo n.º 16
0
    // ------------------------------------------------------------------
    public void InitBullet(GameObject Obj, AIEnemy pAI, EnemyBewitch pBewitch)
    {
        ObjTarget  = Obj;
        pMaster    = pAI;
        pAIBewitch = pBewitch;

        fSpeed = pMaster.GetSpeed();
    }
Exemplo n.º 17
0
    IEnumerator TestWaitOffMyTurn()
    {
        yield return(new WaitForSeconds(0.5f));

        AIEnemy ai = _GameControler._GameObj.GetComponent <AIEnemy>();

        ai.HitPlayer();
    }
 private void OnTriggerExit(Collider other)
 {
     if (other.tag == "EnemyBodyPart")
     {
         AIEnemy enemy = other.transform.root.GetComponent <AIEnemy>();
         enemy.SetTracingTarget(null);
     }
 }
Exemplo n.º 19
0
 // Use this for initialization
 void Start()
 {
     _ai = new AIEnemy[20];
     for (int i = 0; i < _ai.Length; ++i)
     {
         Debug.Log(i);
         _ai[i] = new AIEnemy();
         _ai[i].generate((ns_predefine.ModelEnum)(2300 + 10 * (i % 11)));
     }
 }
Exemplo n.º 20
0
    public void ReactToHit()
    {
        AIEnemy behaviour = GetComponent <AIEnemy>();

        if (behaviour != null)
        {
            behaviour.SetActive(false);
        }
        StartCoroutine(Die());
    }
Exemplo n.º 21
0
    public void ReactToHit()
    {//метод, вызванный сценарием стрельбы
        AIEnemy behaviour = GetComponent <AIEnemy>();

        if (behaviour != null)
        {
            behaviour.SetActive(false);
        }
        StartCoroutine(Die()); //вызываем сопрограмму Die()
    }
Exemplo n.º 22
0
    public void ReactToHit()
    {//метод, вызванный сценарием стрельбы
        StartCoroutine(Die());
        AIEnemy behavior = GetComponent <AIEnemy>();

        if (behavior != null)
        {//проверяем, есть ли у объекта скрипт  AIEnemy
            behavior.SetAlive(false);
        }
    }
Exemplo n.º 23
0
    IEnumerator RunningCutscene()
    {
        player.SendMessage("disablePlayerMovement");

        camScript.SetFollowTarget(camCutsceneTarget);

        Train.SetActive(true);

        bool trainAnimFinished = false;

        while (!trainAnimFinished)
        {
            AnimatorClipInfo[] infos = trainAnim.GetCurrentAnimatorClipInfo(0);

            if (infos.Length == 0)
            {
                trainAnimFinished = true;
            }

            yield return(null);
        }

        Debug.Log("finished");

        camScript.SetFollowTarget(camCutsceneTarget2);

        for (int i = 0; i < enemyAis.Count; i++)
        {
            enemyAis[i].gameObject.SetActive(true);
            enemyAis[i].DisableAi();
            enemyAis[i].enemyMoveToPoint(enemyPosition[i].position);
        }

        playerConvo.InitiateDialog(cutsceneDialog);

        while (playerConvo.currentDialog != null)
        {
            yield return(null);
        }

        for (int i = 0; i < enemyAis.Count; i++)
        {
            enemyAis[i].EnableAi();
            AIEnemy ai = enemyAis[i];
            ai.OnEnemyDeath.AddListener(delegate { EnemyDied(ai); });
        }

        camScript.Reset();

        player.SendMessage("enablePlayerMovement");

        //OnCutsceneFinish.Invoke();

        yield break;
    }
Exemplo n.º 24
0
    // 範圍傷害.
    void GroundHurt(Vector3 vPos, int iDamage)
    {
        pAI.bCanMove = false;

        if (GetComponent <BoxCollider2D>())
        {
            GetComponent <BoxCollider2D>().enabled = false;
        }

        if (GetComponent <Animator>())
        {
            GetComponent <Animator>().Play("Grenade");
        }

        // 沒有可作為目標的怪物.
        if (SysMain.pthis.AtkEnemy.Count <= 0)
        {
            return;
        }

        pAI.pRander.material            = UITool.pthis.M_Sprite;
        gameObject.transform.localScale = new Vector3(GameDefine.fSUBArea / 0.1f, GameDefine.fSUBArea / 0.1f, 1);

        foreach (KeyValuePair <GameObject, int> itor in SysMain.pthis.Enemy)
        {
            if (itor.Key == null)
            {
                continue;
            }

            AIEnemy pEnemy = itor.Key.GetComponent <AIEnemy>();

            if (pEnemy == null)
            {
                continue;
            }

            if (pEnemy.iHP <= 0)
            {
                continue;
            }

            float fDisObj = Vector2.Distance(vPos, itor.Key.transform.position);

            // 比較距離.
            if (fDisObj >= GameDefine.fSUBArea)
            {
                continue;
            }

            pEnemy.AddHP(-iDamage, false);
            Statistics.pthis.RecordHit(ENUM_Damage.SUB, iDamage, false);
        }
    }
Exemplo n.º 25
0
 void OnTriggerEnter(Collider other)
 {
     if (_active_weapon)
     {
         if (other.gameObject.tag == "Enemy")
         {
             enemy = other.gameObject.GetComponent("AIEnemy") as AIEnemy;
             enemy.Damage();
         }
     }
 }
Exemplo n.º 26
0
    private void Awake()
    {
        _myOverlord          = AIOverlord.Instance;
        _myOverlord.AddSquad = this;

        _enemyList = new List <AIEnemy>();
        for (int i = 0; i < transform.childCount; i++)
        {
            AIEnemy _enemyToAdd = transform.GetChild(i).gameObject.GetComponent <AIEnemy>();
            _enemyList.Add(_enemyToAdd);
        }
    }
Exemplo n.º 27
0
    void OnTriggerEnter(Collider other)
    {
        // if collision gameobject is tagged "Enemy"
        if (other.gameObject.tag == "Enemy")
        {
            // Gets the gameobject AIEnemy component reference
            enemy = other.gameObject.GetComponent("AIEnemy") as AIEnemy;

            // Inflicts damage
            enemy.Damage();
        }
    }
Exemplo n.º 28
0
    IEnumerator RunningCutscene()
    {
        player.SendMessage("disablePlayerMovement");

        camScript.SetFollowTarget(camCutsceneTarget);

        for (int i = 0; i < enemyAis.Count; i++)
        {
            enemyAis[i].gameObject.SetActive(true);
            enemyAis[i].DisableAi();
            enemyAis[i].enemyMoveToPoint(enemyPosition[i].position);
        }

        for (int i = 0; i < alienAis.Count; i++)
        {
            alienAis[i].gameObject.SetActive(true);
            alienAis[i].DisableAi();
            alienAis[i].enemyMoveToPoint(alienPosition[i].position);
        }



        playerConvo.InitiateDialog(cutsceneDialog);

        while (playerConvo.currentDialog != null)
        {
            yield return(null);
        }

        for (int i = 0; i < enemyAis.Count; i++)
        {
            AIEnemy ai = enemyAis[i];
            enemyAis[i].EnableAi();
            enemyAis[i].OnEnemyDeath.AddListener(delegate { EnemyDied(ai); });
        }

        for (int i = 0; i < alienAis.Count; i++)
        {
            AIWolf wolf = alienAis[i];
            alienAis[i].EnableAi();
            alienAis[i].OnEnemyDeath.AddListener(delegate { WolfDied(wolf); });
        }



        camScript.Reset();

        player.SendMessage("enablePlayerMovement");

        OnCutsceneFinish.Invoke();

        yield break;
    }
Exemplo n.º 29
0
    // ------------------------------------------------------------------
    void Start()
    {
        pAI = GetComponent <AIEnemy>();
        // 播放抓人動作.
        pAI.AniPlay("Catch");

        if (pAI.iMonster != 1001 && pAI.iMonster != 1004 && pAI.iMonster != 1007)
        {
            EnemyCurry[] temp = GetComponents <EnemyCurry>();
            iReleaseHp = pAI.iHP - (pAI.iHP / 10 * temp.Length);
        }
    }
Exemplo n.º 30
0
 public void GETEnemy(AIEnemy _em)
 {
     _TargetEnemy = _em;
     if (_TargetEnemy == null)
     {
         UIPageMgr.Instance().showbattleui(false);
     }
     else
     {
         UIPageMgr.Instance().showbattleui(true);
         GameResources.Instance()._ObjPlayer.transform.LookAt(_TargetEnemy._Role._ObjRole.transform);
     }
 }
Exemplo n.º 31
0
 ///Actions
 /////////////////////////////////////////////////////////////////////////////////
 public override void doDamage(AIEnemy target)
 {
     float amount = OwnedPlayer.sCharacterClass.electronics + weaponStats.electric;
     target.photonView.RPC("recieveDamage", PhotonTargets.All, amount);
 }