public EnemyAvatar GetEnemy(Vector2 position, Quaternion rotation, string prefabPath) { if (!Instance.availableEnemiesByType.ContainsKey(prefabPath)) { Instance.availableEnemiesByType.Add(prefabPath, new Queue <EnemyAvatar>()); } Queue <EnemyAvatar> availableEnemies = Instance.availableEnemiesByType[prefabPath]; EnemyAvatar enemy = null; if (availableEnemies.Count > 0) { enemy = availableEnemies.Dequeue(); } if (enemy == null) { GameObject gameObject = null; GameObject prefab = (GameObject)Resources.Load(prefabPath); gameObject = Instantiate(prefab, position, rotation); gameObject.transform.parent = Instance.gameObject.transform; enemy = gameObject.GetComponent <EnemyAvatar>(); } enemy.Position = position; enemy.gameObject.SetActive(true); return(enemy); }
public static void ReleaseEnemy(EnemyAvatar enemyAvatar) { Queue <EnemyAvatar> availableEnemies = Instance.availableEnemiesByType[enemyAvatar.PrefabPath]; enemyAvatar.gameObject.SetActive(false); availableEnemies.Enqueue(enemyAvatar); }
public void Release(EnemyAvatar enemy) { enemy.gameObject.SetActive(false); if (enemy.GetEnemyType() == EnemyAvatar.EnemyTypes.Simple) { enemyCache.Enqueue(enemy); } //only one enemy type implemented yet }
private void Start() { for (int i = 0; i != 20; i++) //cache 20 enemies at first { EnemyAvatar enemy = Instantiate(enemyPrefab); enemy.gameObject.SetActive(false); enemyCache.Enqueue(enemy); } }
//Constructs both parties and attaches this battle manager to each of them void Start() { //Assign manager pParty.SetBattleManager(this, ui, board); eParty.SetBattleManager(this, ui, board); //Organize EnemyParty ea = ow.encounteredParty; eParty.OrganizeParty(false, board.enemyCoordinates, board.scaling, ea.GetParty()); //Assign opposite party pParty.otherPartyBody = eParty; eParty.otherPartyBody = pParty; }
public EnemyAvatar GetEnemy(string enemyPath, Vector2 startPosition) { if (!EnemyFactory.Instance.availableEnemiesByType.ContainsKey(enemyPath)) { EnemyFactory.Instance.availableEnemiesByType.Add(enemyPath, new Queue <EnemyAvatar>()); } GameObject enemyObject = null; enemyObject = GetAvailableEnemy(enemyPath); enemyObject.SetActive(true); enemyObject.transform.position = startPosition; EnemyAvatar enemy = enemyObject.GetComponent <EnemyAvatar>(); return(enemy); }
void OnTriggerEnter2D(Collider2D collider) { EnemyAvatar enemyAvatar = collider.gameObject.GetComponent <EnemyAvatar>(); PlayerAvatar playerAvatar = collider.gameObject.GetComponent <PlayerAvatar>(); if (type == BulletType.PlayerBullet && enemyAvatar != null) { enemyAvatar.TakeDamage(Damage); Destroy(gameObject); Debug.Log("Enemy hit"); } else if (type == BulletType.EnemyBullet && playerAvatar != null) { playerAvatar.TakeDamage(Damage); Destroy(gameObject); Debug.Log("Player hit"); } }
//Constructs both parties and attaches this battle manager to each of them void Start() { //Reset Battle Speed to normal gameSpeed = 1; //Assign manager pParty.SetBattleManager(this, ui, board); eParty.SetBattleManager(this, ui, board); //Organize EnemyParty ea = ow.encounteredParty; eParty.OrganizeParty(false, board.enemyCoordinates, board.scaling, ea.GetParty(), ea.addLevel); //Assign opposite party pParty.otherPartyBody = eParty; eParty.otherPartyBody = pParty; Destroy(ow.gameObject); }
void OnTriggerEnter2D(Collider2D other) { if ((this.Type == BulletType.SIMPLE) && (other.tag.Equals("Enemy"))) { this.gameObject.SetActive(false); EnemyAvatar enemy = other.GetComponent <EnemyAvatar>(); enemy.TakeDamage(this.damage); } else if ((this.type == BulletType.ENEMY) && (other.tag.Equals("Player"))) { this.gameObject.SetActive(false); PlayerAvatar player = other.GetComponent <PlayerAvatar>(); player.TakeDamage(this.damage); } else if (other.tag.Equals("PlayerBullet") || other.tag.Equals("EnemyBullet")) { this.gameObject.SetActive(false); other.gameObject.SetActive(false); } }
public EnemyAvatar GetEnemy(EnemyType enemyType, Vector2 initialPosition) { GameObject gameObject; switch (enemyType) { case EnemyType.SimpleShotEnemy: gameObject = EnemyFactory.Instance.SpawnFromPool("SimpleShotEnemy"); break; case EnemyType.DiagonalShotEnemy: gameObject = EnemyFactory.Instance.SpawnFromPool("DiagonalShotEnemy"); break; default: throw new System.Exception("Unknown enemy type." + enemyType); } EnemyAvatar enemy = gameObject.GetComponent <EnemyAvatar>(); enemy.Position = initialPosition; return(enemy); }
public static EnemyAvatar GetEnemy(Vector2 position, Quaternion rotation, string prefabPath) { if (!EnemyFactory.Instance.availableEnemiesByType.ContainsKey(prefabPath)) { EnemyFactory.Instance.availableEnemiesByType.Add(prefabPath, new Queue <EnemyAvatar>()); } Queue <EnemyAvatar> availableEnemies = EnemyFactory.Instance.availableEnemiesByType[prefabPath]; EnemyAvatar enemy = null; if (availableEnemies.Count > 0) { enemy = availableEnemies.Dequeue(); } if (enemy == null) { // Instantiate a new bullet. GameObject gameObject = null; GameObject prefab = (GameObject)Resources.Load(prefabPath); gameObject = (GameObject)GameObject.Instantiate(prefab, position, rotation); gameObject.transform.parent = EnemyFactory.Instance.gameObject.transform; enemy = gameObject.GetComponent <EnemyAvatar>(); enemy.PrefabPath = prefabPath; EnemyFactory.Instance.enemyCount++; Debug.Log("Number of enemies instantiated = " + EnemyFactory.Instance.enemyCount); } enemy.Reset(); enemy.Position = position; enemy.gameObject.SetActive(true); return(enemy); }
private void RandomSpawn() { if (this.rateOfEnemySpawn <= 0f) { return; } float durationBetweenTwoEnemySpawn = 1f / this.rateOfEnemySpawn; if (Time.time < this.lastEnemySpawnTime + durationBetweenTwoEnemySpawn) { // The bullet gun is in cooldown, it can't fire. return; } // Spawn an enemy. EnemyType enemyType = EnemyType.SimpleShotEnemy; if (UnityEngine.Random.value < 0.2f) { enemyType = EnemyType.DiagonalShotEnemy; } float randomY = UnityEngine.Random.Range(-4f, 4f); // Instantiate a new enemy. Vector2 position = new Vector3(10f, randomY); EnemyAvatar enemy = EnemyFactory.Instance.GetEnemy(enemyType, position); enemy.gameObject.transform.rotation = Quaternion.Euler(0f, 0f, 180f); this.lastEnemySpawnTime = Time.time; // Up the difficulty. this.rateOfEnemySpawn += this.rateOfEnemySpawn > this.maximumRateOfEnemySpawn ? 0f : this.rateOfEnemySpawnIncreaseStep; }
// Start is called before the first frame update void Awake() { engines = GetComponent <Engines>(); enemyAvatar = GetComponent <EnemyAvatar>(); }
// Update is called once per frame void Update() { //Instantiation des collectables if (Time.time > timeOfNextCollectibleInstantiation) { //On réinitialise le temps d'attente timeOfNextCollectibleInstantiation += collectibleApparitionCooldown; //On prépare le collectables qu'on va instantier en le choisissant Collectibles toInstantiate; float index = Random.Range(0, weaponCollectibleApparitionRatio + healthCollectibleApparitionRatio + energyCollectibleApparitionRatio); //Selon le nombre tiré, on initialise tel ou tel collectable if (index < weaponCollectibleApparitionRatio) { toInstantiate = weaponCollectible; } else if (index < weaponCollectibleApparitionRatio + healthCollectibleApparitionRatio) { toInstantiate = healthCollectible; } else { toInstantiate = energyCollectible; } //On l'instantie Instantiate(toInstantiate, new Vector3(width, Random.Range(-height, height), 0), transform.rotation); } //Selon le mode de jeu on emploi telle ou telle méthode pour instantier un ennemi if (GameModeWithHealth) { if (levelTextAsset == null) { //Si il n'y a pas de niveau à chaerger, utiliser les valeurs de l'éditeur Unity if (Time.time > timeOfNextEnemyInstantiation && numberOfEnemyInstantiated < numberOfEnemyInLevel) { timeOfNextEnemyInstantiation += enemyCooldown; EnemyAvatar temp = EnemyFactory.Instance.GetEnemy(); temp.SetPosition(new Vector2(width, Random.Range(-height, height))); //On décide de la nature du mouvement de l'ennemi temp.GetComponent <AIEnemyBasicEngine> ().zigzag = (1 == Random.Range(0, 2)); //On prépare l'événement de sa mort temp.OnEnemyDeath += OnEnemyDeath; temp.OnEnemyDeath += UIManager.OnEnemyDeath; //On met à jour le nombre d'ennemis déjà instanciés numberOfEnemyInstantiated++; } } else //Sinon utiliser les données du XML donné { Debug.Log("prout"); if (Time.time > timeOfNextEnemyInstantiation && numberOfEnemyInstantiated < numberOfEnemyInLevel) { timeOfNextEnemyInstantiation += timeBetweenThisAndPreviousEnemy[numberOfEnemyInstantiated]; EnemyAvatar temp = EnemyFactory.Instance.GetEnemy(); temp.SetPosition(new Vector2(width, enemiesVerticalSpawnPositions[numberOfEnemyInstantiated])); numberOfEnemyInstantiated++; temp.GetComponent <AIEnemyBasicEngine> ().zigzag = (1 == Random.Range(0, 2)); temp.OnEnemyDeath += OnEnemyDeath; temp.OnEnemyDeath += UIManager.OnEnemyDeath; } } } else if (!GameModeWithHealth) { if (Time.time > timeOfNextEnemyInstantiation) { timeOfNextEnemyInstantiation += enemyCooldown; //EnemyAvatar temp = Instantiate (enemy, new Vector3 (width, Random.Range (-height, height), 0), transform.rotation); EnemyAvatar temp = EnemyFactory.Instance.GetEnemy(); temp.SetPosition(new Vector2(width, Random.Range(-height, height))); temp.GetComponent <AIEnemyBasicEngine>().zigzag = (1 == Random.Range(0, 2)); temp.OnEnemyDeath += OnEnemyDeath; temp.OnEnemyDeath += UIManager.OnEnemyDeath; } } }
private void Awake() { encounteredParty = activeEnemies[0]; //Default encountered enemy - avoid NULL errors }
void Start() { enemy = GetComponent <EnemyAvatar>(); InvokeRepeating(nameof(FireAtRandomTimes), 1f, 2f); }
public void Relase(EnemyAvatar enemy) { stackEnnemies.Push(enemy); enemy.gameObject.SetActive(false); }
public void FonctionSpawn(Vector2 position, string prefabPath) { EnemyAvatar enemy = EnemyFactory.Instance.GetEnemy(prefabPath, position); }
public void Release(EnemyAvatar enemy) { enemy.gameObject.SetActive(false); }