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); }
// 存檔. 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); }
// ------------------------------------------------------------------ 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); }
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); } }
private void Start() { _hp = _life; _carEn = _thisAI.GetComponent <AIEnemy>(); _car = _thisAI.GetComponent <AltCarMove>(); _civilian = _thisAI.GetComponent <LilHum>(); }
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); }
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); } }
//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>()); } }
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(); } }
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>(); } }
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; }
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; }
public void EnemyDied(AIEnemy enemy) { if (enemyAis.Contains(enemy)) { enemyAis.Remove(enemy); } CheckAllDead(); }
// ------------------------------------------------------------------ public void InitBullet(GameObject Obj, AIEnemy pAI, EnemyBewitch pBewitch) { ObjTarget = Obj; pMaster = pAI; pAIBewitch = pBewitch; fSpeed = pMaster.GetSpeed(); }
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); } }
// 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))); } }
public void ReactToHit() { AIEnemy behaviour = GetComponent <AIEnemy>(); if (behaviour != null) { behaviour.SetActive(false); } StartCoroutine(Die()); }
public void ReactToHit() {//метод, вызванный сценарием стрельбы AIEnemy behaviour = GetComponent <AIEnemy>(); if (behaviour != null) { behaviour.SetActive(false); } StartCoroutine(Die()); //вызываем сопрограмму Die() }
public void ReactToHit() {//метод, вызванный сценарием стрельбы StartCoroutine(Die()); AIEnemy behavior = GetComponent <AIEnemy>(); if (behavior != null) {//проверяем, есть ли у объекта скрипт AIEnemy behavior.SetAlive(false); } }
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; }
// 範圍傷害. 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); } }
void OnTriggerEnter(Collider other) { if (_active_weapon) { if (other.gameObject.tag == "Enemy") { enemy = other.gameObject.GetComponent("AIEnemy") as AIEnemy; enemy.Damage(); } } }
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); } }
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(); } }
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; }
// ------------------------------------------------------------------ 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); } }
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); } }
///Actions ///////////////////////////////////////////////////////////////////////////////// public override void doDamage(AIEnemy target) { float amount = OwnedPlayer.sCharacterClass.electronics + weaponStats.electric; target.photonView.RPC("recieveDamage", PhotonTargets.All, amount); }