public void HeavyAttackUpdate() { if (GetComponentInParent <AfterImage>().IsUpdate) { RaycastHit2D hit = Physics2D.Raycast(transform.position, transform.right, 12, LayerMask.GetMask("enemy")); RaycastHit2D hit1 = Physics2D.Raycast(transform.position, transform.right + new Vector3(0, 0.25f, 0), 12, LayerMask.GetMask("enemy")); RaycastHit2D hit2 = Physics2D.Raycast(transform.position, transform.right + new Vector3(0, -0.25f, 0), 12, LayerMask.GetMask("enemy")); BaseEnemyController enemy = null; BaseEnemyController enemy1 = null; BaseEnemyController enemy2 = null; if (hit.collider) { enemy = hit.collider.GetComponent <BaseEnemyController>(); } if (hit1.collider) { enemy1 = hit1.collider.GetComponent <BaseEnemyController>(); } if (hit2.collider) { enemy2 = hit2.collider.GetComponent <BaseEnemyController>(); } if (enemy || enemy1 || enemy2) { ActorController.Controller.transform.SetPositionY((enemy ? enemy : (enemy1 ? enemy1 : enemy2)).transform.position.y); _rigi.velocity = Vector2.zero; _anim.SetTrigger("skill2_dash"); } } }
/// <summary> /// Call this method to remove enemy instance from this formation. /// </summary> /// <param name="enemyController">Enemy instance</param> public void RemoveEnemy(BaseEnemyController enemyController) { if (_enemyControllers.Contains(enemyController)) { _enemyControllers.Remove(enemyController); } }
protected void HandleCollision(Collision2D collision) { BaseEnemyController controller = collision.gameObject.GetComponent <BaseEnemyController>(); if (controller != null) { controller.TakeDamage(Random.Range(minMaxDamages[0], minMaxDamages[1])); } }
/// <summary> /// Call this routine method to spawn wave of enemies. /// </summary> /// <returns></returns> private IEnumerator SpawnWaves() { int currentWave = 0; while (currentWave < WaveList.Count) { for (int i = 0; i < WaveList[currentWave].FirstEnemyList.Count; i++) { Vector3 startPath = WaveList[currentWave].FirstPath.BezierPathList[0]; Path currentPath = WaveList[currentWave].FirstPath; FormationController currentFormationController = GetFormation(WaveList[currentWave].FirstEnemyList[i]); GameObject newFly = GetCharacter(WaveList[currentWave].FirstEnemyList[i]); newFly.transform.SetParent(this.transform); newFly.transform.position = startPath; BaseEnemyController enemyController = newFly.GetComponent <BaseEnemyController>(); enemyController.Init(currentPath , currentFormationController , _data , WaveList[currentWave].FirstEnemyList[i] ); if (WaveList[currentWave].SecondEnemyList != null && WaveList[currentWave].SecondEnemyList.Count > 0) { startPath = WaveList[currentWave].SecondPath.BezierPathList[0]; currentPath = WaveList[currentWave].SecondPath; currentFormationController = GetFormation(WaveList[currentWave].SecondEnemyList[i]); newFly = GetCharacter(WaveList[currentWave].SecondEnemyList[i]); newFly.transform.SetParent(this.transform); newFly.transform.position = startPath; enemyController = newFly.GetComponent <BaseEnemyController>(); enemyController.Init(currentPath , currentFormationController , _data , WaveList[currentWave].FirstEnemyList[i] ); } yield return(new WaitForSeconds(EnemySpawnInterval)); } yield return(new WaitForSeconds(WaveSpawnInterval)); currentWave++; } _isAllSpawned = true; _isAttackAble = true; }
private BaseEnemyController CreateEnemyUtil(EnemyType type) { //根据类型 生成数据 BaseEnemyInfo data = EnemyInfo.Instance.LoadBaseEnemyData(type); GameObject enemyGo = ResourcesLoadManager.LoadEnemyResources <GameObject>(data.enemyResName); GameObject enemy = GameObject.Instantiate <GameObject>(enemyGo); enemy.transform.SetParent(GameController.Instance.EnemyGroup); BaseEnemyController enemyController = enemy.AddComponent <BaseEnemyController>(); enemyController.InitEnemyData(enemy.transform, data); return(enemyController); }
private BaseEnemyController GetAsteroid(HashSet <BaseEnemyController> enemies) { var enemy = enemies.FirstOrDefault(a => !a.IsActive); if (enemy == null) { for (int i = 0; i < _poolCapacity; i++) { var newEnemy = new BaseEnemyController(_enemyData, _factory); newEnemy.ID = _id++; ReturnToPool(newEnemy); enemies.Add(newEnemy); } GetAsteroid(enemies); } enemy = enemies.FirstOrDefault(a => !a.IsActive); return(enemy); }
void Awake() { PlayerPrefs.SetInt("retreated", 0); SceneFadeHandler.Instance.levelStarting = true; EscapeHandler.instance.GetButtons(); // Combat AI Controller reference this.combatController = FindObjectOfType <CombatController>(); // inventory animator this.invAnim = FindObjectOfType <InventoryAnimation>(); this.player = FindObjectOfType <PlayerController>(); this.enemy = FindObjectOfType <BaseEnemyController>(); currentBattle = BattleCounter.GetInstance().GetCurrentBattleCount(); remainingBattles = BattleCounter.GetInstance().GetRemainingBattles(); _backgroundManager = FindObjectOfType <BackgroundManager>(); _backgroundManager.SetBackground(); }
/// <summary> /// 子弹命中了对象 /// </summary> private void OnTriggerEnter2D(Collider2D collision) { if (IsUsing) { //子弹击中了敌人 if (collision.gameObject.CompareTag(TagManager.TAG_ENEMY)) { BaseEnemyController enemyController = collision.gameObject.GetComponent <BaseEnemyController>(); if (enemyController.IsUsing) { //Enemy Flash enemyController.DoFlash(); //HP Check enemyController.baseEnemyInfo.HP -= baseBulletInfo.power; if (enemyController.baseEnemyInfo.HP <= 0) { enemyController.SetNotUse(); //增加得分 RobotInfo.Instance.Score += enemyController.baseEnemyInfo.score; EventManager.Instance.ExcuteEvent(EventType.PlayerScoreChange, null); } //子弹消失 SetNotUse(); } } //子弹击中了玩家 if (collision.gameObject.CompareTag(TagManager.TAG_PLAYER)) { //TODO } } }
public void ReturnKilledToPool(BaseEnemyController enemy) { enemy.ReturnToPool(_poolRoot); OnEnemyKilledAndReturned.Invoke(enemy); }
public void ReturnToPool(BaseEnemyController enemy) { enemy.ReturnToPool(_poolRoot); }
/// <summary> /// Sets the stats of an enemy that is passed through. /// </summary> /// <param name="enemy">BaseEnemyController class.</param> public void GetEnemyBaseStats(BaseEnemyController enemy, PlayerController player) { // Debug.Log("Checkpoint is: " + lastCheckpointHP + " HP, " + lastCheckpointNRG + " NRG, " + lastCheckpointATK + " ATK, " + lastCheckpointDEF + " DEF."); // Debug.Log("Previous is: " + previousEnemyHP + " HP, " + previousEnemyNRG + " NRG, " + previousEnemyATK + " ATK, " + previousEnemyDEF + " DEF."); // Debug.Log("Start of Run bool = " + startOfRun); if (startOfRun == true) { //SetCheckpoint(); startOfRun = false; } //Debug.Log("Getting Enemy Stats"); float min; float max; if (!firstEnemy) { // Check the HP and NRG. if (CheckStatGap(previousEnemyHP, previousEnemyNRG, player.totalHealth, player.totalEnergy, MIN_gapFill_HP_NRG, MAX_gapFill_HP_NRG) == false) { //Debug.Log("Not first enemy."); if (!CheckForBoss()) { //Debug.Log("Not boss."); min = MIN_inc; max = MAX_inc; } else { //Debug.Log("Enemy is boss."); min = MIN_inc_boss; max = MAX_inc_boss; } } else { //Debug.Log("Stat gap fill HP and NRG"); min = MIN_gapFill_HP_NRG; max = MAX_gapFill_HP_NRG; } //Debug.Log("Increasing HP and NRG stats"); currentEnemyTotalHP = previousEnemyHP + RandomIncrease(previousEnemyHP, (min + 0.05f), (max + 0.1f)); currentEnemyTotalNRG = previousEnemyNRG + RandomIncrease(previousEnemyNRG, min, max); // CHECK HERE IF LOADED OR GENERATED TO DECIDE IF ENEMY STARTS WITH FULL HEALTH OR REDUCED! // Check the ATK and DEF. if (CheckStatGap(previousEnemyATK, previousEnemyDEF, player.physicalDamage, player.armor, MIN_gapFill_ATK_DEF, MAX_gapFill_ATK_DEF) == false) { //Debug.Log("Not first enemy."); if (CheckForBoss() == false) // Used to be !CheckForBoss() { //Debug.Log("Not boss."); min = MIN_inc; max = MAX_inc; } else { //Debug.Log("Enemy is boss."); min = MIN_inc_boss; max = MAX_inc_boss; } } else { //Debug.Log("Stat gap fill ATK and DEF"); min = MIN_gapFill_ATK_DEF; max = MAX_gapFill_ATK_DEF; } //Debug.Log("Increasing ATK and DEF stats"); currentEnemyATK = previousEnemyATK + RandomIncrease(previousEnemyATK, min, max); currentEnemyDEF = previousEnemyDEF + RandomIncrease(previousEnemyDEF, min, max); } if (SaveSystemHandler.instance.enemyLoadedFromFile) { enemy.SetStats(currentEnemyRemainingHP, currentEnemyTotalHP, currentEnemyRemainingNRG, currentEnemyTotalNRG, currentEnemyATK, currentEnemyDEF); } else { enemy.SetStats(currentEnemyTotalHP, currentEnemyTotalHP, currentEnemyTotalNRG, currentEnemyTotalNRG, currentEnemyATK, currentEnemyDEF); } StatFlip(); }
private void Awake() { _controller = GetComponentInParent <BaseEnemyController>(); _rigi = GetComponentInParent <Rigidbody2D>(); }
// Use this for initialization void Start() { this.player = FindObjectOfType <PlayerController>(); this.enemy = FindObjectOfType <BaseEnemyController>(); }
public void SetKilledEnemy(BaseEnemyController enemy) { _text.text = _message + enemy.Name; Hide().ToObservable().Subscribe(); }
private void OnEnemyKilled(BaseEnemyController enemy) { _lastEnemyKilledPanelController.SetKilledEnemy(enemy); }
/// <summary> /// Call this method to register enemy instance into this formation. /// </summary> /// <param name="enemyController">Enemy instance</param> public void AddEnemy(BaseEnemyController enemyController) { _enemyControllers.Add(enemyController); }