public static void KillEnnemi(Ennemis perso) { instance.ItemDrop(perso); //TODO: particule à la mort des ennemis Destroy(perso.gameObject); }
//**** Activation/ Desactivation par rapport à la distance ****// // reset les pv de chacune de ces partie à la mort du joueur public void resetPV() { m_Player = null; foreach (Transform item in m_lstEnnemis) { Ennemis pasFin = item.GetComponent <Ennemis>() as Ennemis; pasFin.ennemiStats.vie = pasFin.ennemiStats.vieMax; item.GetComponent <SpriteMask>().alphaCutoff = 1.0f; } List <GameObject> lstLaser = new List <GameObject>(GameObject.FindGameObjectsWithTag("laserBoss")); foreach (GameObject las in lstLaser) { las.GetComponent <laser>().Disparait(); } //FindObjectOfType<AudioManager>().Mute("LaserBossMilieu"); Sequence retour = DOTween.Sequence(); retour.AppendCallback(() => { m_CurrentNode = m_StartNode.m_VoisinGauche; jumpRot(false); }).SetDelay(0.9f); retour.AppendCallback(() => { enabled = false; }); retour.Play(); }
public void ItemDrop(Ennemis perso) { float result = UnityEngine.Random.Range(1, 100); if (result / 100 > 0.5f) { result = UnityEngine.Random.Range(1, 100); if (result / 100 > 0.5f) //1-50: Missile, 51-100: Health { PlayerCharacter2D pc = FindObjectOfType <PlayerCharacter2D>(); if (pc.HasUpgrade("Missile")) { GameObject clone = Instantiate(itemPickupPrefab, perso.transform.position, perso.transform.rotation); clone.GetComponent <PickupItem>().PickupType = "Missile"; clone.GetComponent <Animator>().Play("Missile"); clone.GetComponent <PickupItem>().Valeur = 5; //Debug.Log("missile drop"); } } else { //Debug.Log("health drop"); GameObject clone = Instantiate(itemPickupPrefab, perso.transform.position, perso.transform.rotation); clone.GetComponent <PickupItem>().PickupType = "Health"; clone.GetComponent <Animator>().Play("Health"); clone.GetComponent <PickupItem>().Valeur = 10; } } }
public void CheatLifeBoss() { for (int i = 0; i < m_lstEnnemis.Count; i++) { if (m_lstEnnemis[i] == null) { continue; } Ennemis pasFin = m_lstEnnemis[i].GetComponent <Ennemis>() as Ennemis; pasFin.ennemiStats.vie = 1; } }
public void SpawnEnnemi() { if (thisEnnemi != null) { thisEnnemi.transform.position = tr.position; thisEnnemi.SoinPerso(999999); } else if (ennemi != null) { thisEnnemi = Instantiate(ennemi, tr.position, tr.rotation).GetComponent <Ennemis>(); } if (thisEnnemi != null && thisEnnemi.enabled) { SpawnParticule(); } }
// remet le boss à son état initiale full vie quand le joueur meurt public void resetBoss() { Ennemis pasFin = m_Core.GetComponent <Ennemis>() as Ennemis; pasFin.SoinPerso(1000); m_Core.GetComponent <SpriteMask>().alphaCutoff = 1.0f; List <GameObject> lstLaser = new List <GameObject>(GameObject.FindGameObjectsWithTag("laserBoss")); foreach (GameObject las in lstLaser) { las.GetComponent <laser>().Disparait(); } transform.rotation = Quaternion.Euler(new Vector3(0.0f, 0.0f, 0.0f)); m_shootState = false; m_TPState = false; m_currentTP = m_nbTP; enabled = false; }
private void Start() { myTransform = transform; ennemis = GetComponent <Ennemis>() as Ennemis; seeker = GetComponent <Seeker>() as Seeker; if (target == null) { if (!searchingForPlayer) { searchingForPlayer = true; StartCoroutine(SearchForPlayer()); } return; } //Commencer un nouveau chemin vers la position de la cible, retourne le resultat a la methode OnPathComplete //TODO: !Ne pas chercher le chemin quand le joueur est trops loin seeker.StartPath(myTransform.position, target.position, OnPathComplete); StartCoroutine(UpdatePath()); }
public override void OnInspectorGUI() { serializedObject.Update(); Ennemis ennemi = target as Ennemis; //***** Vie *****// EditorGUILayout.Space(); ennemi.showVie = EditorGUILayout.Foldout(ennemi.showVie, "Vie", true); if (ennemi.showVie) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(immortel, new GUIContent("Immortel")); if (!immortel.boolValue) { EditorGUILayout.IntSlider(vie, 0, vieMax.intValue, "Vie courante"); ProgressBar((float)vie.intValue / (float)vieMax.intValue, "Vie"); EditorGUI.indentLevel++; EditorGUILayout.PropertyField(vieMax, new GUIContent("Vie Max")); EditorGUI.indentLevel--; } EditorGUI.indentLevel--; } //****** Les dommages ******// EditorGUILayout.Space(); ennemi.showDommage = EditorGUILayout.Foldout(ennemi.showDommage, "Dommages", true); if (ennemi.showDommage) { //***** Contact *****// EditorGUI.indentLevel++; EditorGUILayout.PropertyField(contact, new GUIContent("Contact")); if (contact.boolValue) { EditorGUI.indentLevel++; EditorGUILayout.IntSlider(dmgContact, 0, 100, "Dommage Contact"); ProgressBar(dmgContact.intValue / 100f, "Dommage"); ennemi.showContactDommage = EditorGUILayout.Foldout(ennemi.showContactDommage, "Contacte Explosion", true); if (ennemi.showContactDommage) { EditorGUILayout.PropertyField(ePower, new GUIContent("Force répulsion")); //EditorGUILayout.PropertyField(eRadius, new GUIContent("Rayon répultion")); //EditorGUILayout.PropertyField(upwardsModifier, new GUIContent("Upwards Modifier")); EditorGUILayout.PropertyField(glace, new GUIContent("Glace")); EditorGUILayout.PropertyField(poison, new GUIContent("Poison")); EditorGUILayout.PropertyField(foudre, new GUIContent("Foudre")); } EditorGUI.indentLevel--; EditorGUILayout.Space(); } //***** Attaque *****// EditorGUILayout.PropertyField(attaque, new GUIContent("Attaque")); Ennemis.typeAttaque tAttaque = (Ennemis.typeAttaque)attaque.enumValueIndex; if (tAttaque != Ennemis.typeAttaque.Rien) { EditorGUI.indentLevel++; EditorGUILayout.IntSlider(dmgAttaque, 0, 100, "Dommage Attaque"); ProgressBar(dmgAttaque.intValue / 100f, "Dommage"); EditorGUI.indentLevel--; } switch (tAttaque) { case Ennemis.typeAttaque.Rien: break; case Ennemis.typeAttaque.Explosion: EditorGUI.indentLevel++; EditorGUILayout.PropertyField(fireRate, new GUIContent("Fire Rate")); EditorGUI.indentLevel--; break; case Ennemis.typeAttaque.Tirer: EditorGUI.indentLevel++; EditorGUILayout.PropertyField(fireRate, new GUIContent("Fire Rate")); EditorGUILayout.PropertyField(tirerSurJoueur, new GUIContent("Tirer sur le joueur")); EditorGUI.indentLevel--; break; default: break; } EditorGUI.indentLevel--; } //***** Deplacement *****// EditorGUILayout.Space(); ennemi.showMouvement = EditorGUILayout.Foldout(ennemi.showMouvement, "Mouvement", true); if (ennemi.showMouvement) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(deplacement, new GUIContent("Deplacement")); Ennemis.typeDeplac tDeplacement = (Ennemis.typeDeplac)deplacement.enumValueIndex; switch (tDeplacement) { case Ennemis.typeDeplac.Voler: case Ennemis.typeDeplac.Immobile: break; default: EditorGUILayout.PropertyField(hauteurSaut, new GUIContent("Force du Saut")); break; } if (tDeplacement != Ennemis.typeDeplac.Immobile) { EditorGUILayout.PropertyField(speed, new GUIContent("Vitesse")); EditorGUILayout.PropertyField(maxSpeed, new GUIContent("maxSpeed")); EditorGUILayout.PropertyField(fMode, new GUIContent("FMode")); } EditorGUILayout.PropertyField(facingRight, new GUIContent("Facing Right")); EditorGUI.indentLevel--; } EditorGUILayout.Space(); ennemi.showElements = EditorGUILayout.Foldout(ennemi.showElements, "Éléments", true); if (ennemi.showElements) { EditorGUILayout.PropertyField(resitGlace, new GUIContent("Resite Glace")); EditorGUILayout.PropertyField(resitPoison, new GUIContent("Resite Poison")); EditorGUILayout.PropertyField(resitFoudre, new GUIContent("Resite Foudre")); EditorGUILayout.PropertyField(glacer, new GUIContent("Ralentit")); EditorGUILayout.PropertyField(empoisoner, new GUIContent("Empoisoné")); EditorGUILayout.PropertyField(paralyse, new GUIContent("Paralysé")); } serializedObject.ApplyModifiedProperties(); }
// Update is called once per frame void Update() { for (int i = 0; i < m_lstEnnemis.Count; i++) { if (m_lstEnnemis[i] == null) { m_lstEnnemis.RemoveAt(i); } } // Paramètrage pour la 2e phase if (m_lstEnnemis.Count == 1 && m_Phase2 == false) { m_Phase2 = true; Ennemis core = m_Core.GetComponent <Ennemis>() as Ennemis; core.ennemiStats.immortel = false; core.enabled = true; bc.enabled = false; m_MovingRate = m_MovingRate2; Sequence sdown = DOTween.Sequence(); sdown.Append(m_shield.DOScale(0.1f, 2.0f).SetEase(Ease.InBounce)); sdown.InsertCallback(0.5f, () => { Transform eff = m_shield.GetChild(1); eff.gameObject.SetActive(false); FindObjectOfType <AudioManager>().Play("ShieldBossDown"); }); sdown.AppendCallback(() => { m_shield.gameObject.SetActive(false); }); } if (m_lstEnnemis.Count == 0) { // le boss est mort GameObject ex = Instantiate(m_ExplosionEffect, transform.position, transform.rotation); FindObjectOfType <AudioManager>().Play("ExplosionBoss"); Sequence bossKill = DOTween.Sequence(); bossKill.SetDelay(2.0f); bossKill.AppendCallback(() => { Destroy(ex); }); List <GameObject> lstLaser = new List <GameObject>(GameObject.FindGameObjectsWithTag("laserBoss")); foreach (GameObject las in lstLaser) { las.GetComponent <laser>().Disparait(); } //FindObjectOfType<AudioManager>().Mute("LaserBossMilieu"); GameMaster.KillBoss(this); } /*if (m_Player == null) * { * if (!searchingForPlayer) * { * searchingForPlayer = true; * StartCoroutine(SearchForPlayer()); * } * }*/ // ajustement du boxCollider2D pour qu'il écrase que si le joueur est en dessous // Quelque soit l'angle if (m_Phase2 == false) { int angle = (int)tr.rotation.eulerAngles.z; if (angle > 320 || angle < 40) { bc.offset = new Vector2(0.0f, -1.1f); bc.size = new Vector2(2.0f, 0.6f); } else if (angle > 50 && angle < 130) { bc.offset = new Vector2(-1.1f, 0.0f); bc.size = new Vector2(0.6f, 2.0f); } else if (angle > 140 && angle < 220) { bc.offset = new Vector2(0.0f, 1.1f); bc.size = new Vector2(2.0f, 0.6f); } else if (angle > 230 && angle < 310) { bc.offset = new Vector2(1.1f, 0.0f); bc.size = new Vector2(0.6f, 2.0f); } } }