private void OnTriggerEnter2D(Collider2D otherCollider) { AEnemy enemyScript = otherCollider.gameObject.GetComponent <AEnemy>(); // Check if the object is an enemy by looking for an enemy script if (enemyScript != null && !enemyScript.IsDead()) // If enemy isn't already dead, do damage { AudioManager.Instance.PlayOneShot("BoomerangHit"); enemyScript.TakeDamage(Player.BoomerangDamage); } Boomerang boomerangScript = otherCollider.gameObject.GetComponent <Boomerang>(); if ((boomerangScript != null) && (numExplosions > 0)) // If object is another boomerang { Vector2 vel = boomerangRb.velocity; float thisAngle = Mathf.Atan2(vel.y, vel.x) * Mathf.Rad2Deg; float otherAngle = Mathf.Atan2(otherCollider.GetComponent <Rigidbody2D>().velocity.y, otherCollider.GetComponent <Rigidbody2D>().velocity.x) * Mathf.Rad2Deg; if (Mathf.Abs(otherAngle - thisAngle) > minAngle) // Check that the angle between the two boomerangs' velocity is bigger than 10 { Vector2 offset = vel * (0.55f / vel.magnitude); // Offsetting it so that the explosion is at the intersection of the two boomerangs Instantiate(_player.boomerangExplosionEffect, this.transform.position + new Vector3(offset.x, offset.y, 0f), Quaternion.AngleAxis(thisAngle, Vector3.forward)); numExplosions -= 1; } } }
public AEnemy Instanciate(AEnemy prefabEnemy) { Transform instance; AEnemy instanciatedEnemy; instance = Object.Instantiate(prefabEnemy.transform, Position, Quaternion.LookRotation(Vector3.left, Vector3.up)); instanciatedEnemy = instance.GetComponent <AEnemy>(); if (instanciatedEnemy != null) { instanciatedEnemy.transform.Translate(-instanciatedEnemy.GetExtents().Min.x, 0, 0f, Space.World); SetEnemy(instanciatedEnemy); instanciatedEnemy.SetSpawn(this); } else { Object.Destroy(instance); Debug.LogWarning("[Spawn] [Instanciate] Null reference. Cannot assign new enemy to spawn."); return(null); } return(instanciatedEnemy); }
void OnCollisionEnter2D(Collision2D other) { if (other.gameObject.CompareTag("Enemy") || other.gameObject.CompareTag("Boss")) { AEnemy _enemy = other.gameObject.GetComponent <AEnemy>(); TakeDamage(_enemy.Damages); //Prend des dégats en cas de contact avec un ennemie } }
public AWeapon(float _fireDelay, GameObject _owner, GameObject _projectilePrefab, Vector3 _bulletDirection) { owner = _owner; fireDelay = _fireDelay; projectilePrefab = _projectilePrefab; bulletDirection = _bulletDirection; ownerScript = owner.GetComponent<AEnemy>(); }
// ----- [ Constructors ] ------------------------------------------- public Spawn(Vector2 pos, Vector2 size, int id) { Position = new Vector3(pos.x, pos.y, 0f); Size = size; Id = id; _enemy = null; }
//when enter other collider recycle self //exclude layers player bullets void OnTriggerEnter2D(Collider2D other) { if (other.tag == "Enemy") { AEnemy enemy = other.gameObject.GetComponent <AEnemy> ( ); enemy.TakeDamage(damage); } Recycle( ); }
public override void Update(GameTime _gameTime) { if (!transition && !transitionScreen.isTransition) { if (KeyboardManager.Instance.IsKeyActivity(Keys.OemTilde.ToString(), KeyActivity.Pressed)) { using (MapSelection se = new MapSelection()) { System.Windows.Forms.DialogResult res = se.ShowDialog(); if (res == System.Windows.Forms.DialogResult.OK) { LoadMap(se.GetCleanText()); } } } if (KeyboardManager.Instance.IsKeyActivity(Keys.Enter.ToString(), KeyActivity.Pressed)) { isPause = !isPause; MusicManager.Instance.Pause(); } if (isPause) { } else if (player.IsDead) { player.PlayDeathUpdate(_gameTime, map); } else { map.Update(_gameTime); player.Update(_gameTime, map); for (int i = enemies.Count - 1; i >= 0; i--) { AEnemy enemy = enemies[i]; enemy.Update(_gameTime, map, player); if (enemy.IsDead) { enemies.Remove(enemy); } } if (player.ChangeLevel != null) { LoadMap(player.ChangeLevel); } } GameManager.Instance.Cam.Follow(player.CollisionBox); } else { GameManager.Instance.Cam.SetObjectCenter(); transitionScreen.Update(_gameTime); } }
private void SpawnEnemies() { for (int i = 0; i < numOfEnemies; ++i) { Vector2 startPos = new Vector2(transform.position.x + Random.Range(-spawnRadius, spawnRadius), transform.position.y + Random.Range(-spawnRadius, spawnRadius)); AEnemy newEnemy = EnemyFactory.CreateEnemy(id, startPos).GetComponent <AEnemy>(); newEnemy.transform.SetParent(gameObject.transform); enemies.Add(newEnemy); } }
private void OnTriggerEnter2D(Collider2D otherCollider) { AEnemy enemyScript = otherCollider.gameObject.GetComponent <AEnemy>(); // Check if the object is an enemy by looking for an enemy script if (enemyScript != null && !enemyScript.IsDead()) // If enemy isn't already dead, do damage { enemyScript.TakeDamage(Player.BoomerangExplosionDamage); } }
void OnTriggerEnter2D(Collider2D other)//si elle entre en collision { if (!other.gameObject.CompareTag("Player")) { if (other.gameObject.CompareTag("Enemy") || other.gameObject.CompareTag("Boss")) { AEnemy _enemy = other.gameObject.GetComponent <AEnemy>(); //Recup les données AEnemy de l'ennemie touché _enemy.TakeDamage(arrowDmg); //Inflige des dégats a l'ennemie } Destroy(gameObject); //Detruit l'arrow } }
private void LaunchAttack(Collider2D hitbox, int damageAmount) { Collider2D[] allColliders = Physics2D.OverlapBoxAll(hitbox.bounds.center, hitbox.bounds.size, 0); foreach (Collider2D collider in allColliders) { AEnemy enemyScript = collider.gameObject.GetComponent <AEnemy>(); // Check if the enemy script exists to confirm that this is an enemy's collider if (enemyScript != null && !enemyScript.IsDead()) // If enemy isn't already dead, do damage { _player.slashParticle.Play(); enemyScript.TakeDamage(damageAmount); } } }
private void Awake() { _enemy = GetComponent <AEnemy>(); _enemy.OnDie += OnDie; RigidBody = GetComponent <Rigidbody2D>(); Player = FindObjectOfType <APlayer>().transform; _distanceDetector = gameObject.AddComponent <DistanceDetector>(); _distanceDetector.DetectionDistance = visionRange; _distanceDetector.targetTag = "Player"; StateMachine = new StateMachine(); Mover = new Mover(spriteRenderer, RigidBody, Stats.Speed); SetUpStates(); }
void OnTriggerEnter2D(Collider2D other) { AEnemy enemy = other.GetComponent <AEnemy>(); if (enemy) { if (enemy.transform.position.x >= 0) { enemy.SetColor(colorRight); } else { enemy.SetColor(colorLeft); } } }
private void Ressurect() { if ((resTimer += Time.deltaTime) > resDuration) { GameObject obj = GameObject.Instantiate(zombiePrefab, transform.position, transform.rotation) as GameObject; obj.transform.parent = eSpawner.transform; AEnemy zombie = obj.GetComponent <AEnemy>(); zombie.Init(hero, eSpawner.GetLevelSpeed(), 1.0f, null, colorValue); GameObject.Destroy(this.gameObject); } else { spriteRenderer.color -= step * Time.deltaTime; spriteRenderer.material.SetColor("_Color", spriteRenderer.color); } }
private void FindTheNearestEnemies(AEnemy firstEnemy) { foreach (var enemy in allEnemies) { var tempEnemy = enemy?.GetComponent <AEnemy>(); var tempDistance = Vector3.Distance(enemy.transform.position, firstEnemy.transform.position); //Если эта операция будет сильно напрягать память, можно считать дистанцию вручную. if (radiusElectro >= tempDistance && !nearestEnemies.Contains(tempEnemy)) { nearestEnemies.Add(tempEnemy); } if (radiusElectro < tempDistance && nearestEnemies.Contains(tempEnemy)) { nearestEnemies.Remove(tempEnemy); } } }
public List <AEnemy> GetEnemies() { List <AEnemy> enemies = new List <AEnemy>(); foreach (EnemyObjectInfo eInfo in mapInfo.EnemyObjects) { AEnemy enemy = EnemyLoader.Create(eInfo.Type); enemy.LoadEnemy(eInfo.Destination, eInfo.Source); enemy.Load(); enemies.Add(enemy); } //BlockEnemy enemy = new BlockEnemy(); //enemy.Init(); //enemy.Load(); //enemies.Add(enemy); return(enemies); }
/// <summary> /// Spawns Enemies in Room /// </summary> private void SpawnEnemies() { if (hasSpawnedEnemies) { return; } for (int i = 0; i < enemiesInRoom.Length; i++) { SpawnTemplate template = enemiesInRoom[i]; GameObject enemy = Instantiate(template.EnemyPrefab); enemy.transform.SetParent(enemyHolder.transform); enemy.transform.localPosition = template.SpawnPosition; enemy.transform.rotation = Quaternion.Euler(0, 0, template.SpawnRotation); AEnemy script = enemy.GetComponent <AEnemy>(); enemies.Add(script); script.AddDeathListener(CheckRoomClear); } hasSpawnedEnemies = true; }
private void SpawnEntity(Formation formation, ColorPicker color) { GameObject spawn = formation.GetEntity(); Vector3 start = formation.transform.position; start.y = spawnHeight; if (color >= ColorPicker.LEFT && color <= ColorPicker.RIGHT) { switch (color) { case ColorPicker.LEFT: start.x = -3; break; case ColorPicker.MLEFT: start.x = -1; break; case ColorPicker.MRIGHT: start.x = 1; break; case ColorPicker.RIGHT: start.x = 3; break; } } GameObject obj = Instantiate(spawn, start, spawn.transform.rotation) as GameObject; obj.transform.parent = this.transform; AEnemy enemy = obj.GetComponent <AEnemy>(); enemy.Init(hero, levels[level].speed, speedModifier, bonusManager.GetRandomBonus(), ColorPickerToColor(color)); }
private void createEnemy(AEnemy enemy) { bool spawned = false; int x = 0;// Random.Range(0, MapManager.rows-1); int counter = 0; while (spawned == false) { int y = Random.Range(0, MapManager.yRow - 1); Vector3 pos = new Vector2(x, y); if(Physics2D.OverlapCircleAll(pos, .4f).Length <1) { createEnemy(enemy, pos); spawned = true; } if (counter > MapManager.yRow) { spawned = true; } counter++; } }
/* It's not in the main GameObject of the enemy because we will might use OnTriggerEnter/OnTriggerExit in Enemy for other purposes */ private void Awake() { enemyController = GetComponentInParent <AEnemy>(); }
private void createEnemy(AEnemy enemy, Vector2 pos) { AEnemy instance = Instantiate(enemy, pos, Quaternion.identity) as AEnemy; instance.transform.SetParent(enemyHolder.transform); enemiesSpawned.Add(instance); }
// ----- [ Getters / Setters ] -------------------------------------- public void SetEnemy(AEnemy enemy) { _enemy = enemy; _enemy.OnDestruction += HandleEnemyOnDestruction; }
// --v-- Private Functions --v-- private void RemoveEnemy() { _enemy = null; }
/* private methods */ private bool changeTarget() { int bestTarget = -1; // means no target int bestScore = 1000; int myX = (int)transform.position.x; int myY = (int)transform.position.y; Vector2 myPosition = new Vector2(myX, myY); // if there is atleast 1 friend, then checking and returning index if (!(LevelManager.enemiesSpawned.Count < 1)) { //print("trying to change target"); // looking for best target for (int i = 0; i < LevelManager.enemiesSpawned.Count; i++) { AEnemy potentialTarget = LevelManager.enemiesSpawned[i]; Vector2 potentialTargetPosition = new Vector2( (int)potentialTarget.transform.position.x, (int)potentialTarget.transform.position.y); int score = MapCalc.GetMinCost(myPosition, potentialTargetPosition); if (score < bestScore) { bestScore = score; bestTarget = i; } } // better to add try catch, cause some of the enemies might try to swap into unexisting char try { _enemyTarget = LevelManager.enemiesSpawned[bestTarget]; } catch (Exception e) { print("ERROR!" + e.StackTrace); } return true; } return false; }
private void Awake() { enemy = GetComponentInParent <AEnemy>(); timer = cooldownForNextAttack(); }