// Update is called once per frame void FixedUpdate() { // etape 1 : avancer jusqu'au milieu de la scene if (etat == 0) { Vector2 velocity = rb.velocity; velocity.x = moveSpeed; animator.SetFloat("hSpeed", Mathf.Abs(rb.velocity.x)); rb.velocity = velocity; } // etape 3 : transformer le joueur en ame if (etat == 2) { etat = 3; ame.gameObject.SetActive(true); Invoke("kill", 1); } // etape 2 : stopper le joueur et passer en mode spirituel if (etat == 1) { // on stoppe le joueur Vector3 theScale = transform.localScale; theScale.x *= -1; transform.localScale = theScale; animator.SetFloat("hSpeed", 0); etat = 2; // on passe en mode esprit isSpirit = !isSpirit; animator.SetBool("isSpirit", isSpirit); // on passe les elements de la scene en mode esprit int lengthPlateformes = level.plateformes.Length; int lengthBackground = level.backgrounds.Length; Plateforme plateforme = (Plateforme)level.plateformes[0]; plateforme.isSpirit = isSpirit; if (!(plateforme.statut == 0 || isSpirit && plateforme.statut == 2 || !isSpirit && plateforme.statut == 1)) { for (int j = 0; j < plateforme.transform.childCount; j++) { Transform objet = plateforme.transform.GetChild(j); if (objet.name == "Player") { groundChecker.getTriggers().Clear(); objet.transform.parent = null; } } } for (int i = 0; i < lengthBackground; i++) { backgroundAdapter back = (backgroundAdapter)level.backgrounds[i]; back.changeUnivers(isSpirit); } } }
// A l'initialisation, le monde est en mode physique, on passe tout // les objets de la scene en mode physique void Start() { isTimerOn = false; isActivating = false; hasJumped = false; period = 0.1f; rb = GetComponent <Rigidbody2D>(); animator = GetComponent <Animator>(); //- On recupere les tableaux des elements de notre GameObject Level. //- Pour chaque tableau, on parcourt les elements //- On recupere l’element, on change son attribut isSpirit. //- On desactive l’element si c’est un element physique et qu’on est en mode esprit, ou si c’est //un element spirituel et qu’on est en mode physique. On active l’element sinon int lengthActionneurs = level.actionneurs.Length; int lengthEnnemis = level.ennemis.Length; int lengthCadavres = level.cadavres.Length; int lengthPlateformes = level.plateformes.Length; int lengthMurs = level.murs.Length; int lengthBackground = level.backgrounds.Length; Physics2D.IgnoreLayerCollision(9, 10); animator.SetBool("isSpirit", isSpirit); for (int i = 0; i < lengthActionneurs; i++) { Actionneur actionneur = (Actionneur)level.actionneurs[i]; actionneur.isSpirit = isSpirit; actionneur.gameObject.SetActive(actionneur.statut == 0 || isSpirit && actionneur.statut == 2 || !isSpirit && actionneur.statut == 1); } for (int i = 0; i < lengthEnnemis; i++) { Ennemi ennemi = (Ennemi)level.ennemis[i]; ennemi.isSpirit = isSpirit; ennemi.gameObject.SetActive(ennemi.statut == 0 || isSpirit && ennemi.statut == 2 || !isSpirit && ennemi.statut == 1); } for (int i = 0; i < lengthCadavres; i++) { Cadavre cadavre = (Cadavre)level.cadavres[i]; cadavre.isSpirit = isSpirit; cadavre.gameObject.SetActive(cadavre.statut == 0 || isSpirit && cadavre.statut == 2 || !isSpirit && cadavre.statut == 1); } for (int i = 0; i < lengthPlateformes; i++) { Plateforme plateforme = (Plateforme)level.plateformes[i]; plateforme.isSpirit = isSpirit; if (!(plateforme.statut == 0 || isSpirit && plateforme.statut == 2 || !isSpirit && plateforme.statut == 1)) { for (int j = 0; j < plateforme.transform.childCount; j++) { Transform objet = plateforme.transform.GetChild(j); if (objet.name == "Player") { groundChecker.getTriggers().Clear(); objet.transform.parent = null; } } } plateforme.gameObject.SetActive(plateforme.statut == 0 || isSpirit && plateforme.statut == 2 || !isSpirit && plateforme.statut == 1); } for (int i = 0; i < lengthMurs; i++) { Mur mur = (Mur)level.murs[i]; mur.isSpirit = isSpirit; mur.gameObject.SetActive(mur.statut == 0 || isSpirit && mur.statut == 2 || !isSpirit && mur.statut == 1); } for (int i = 0; i < lengthBackground; i++) { backgroundAdapter back = (backgroundAdapter)level.backgrounds[i]; back.changeUnivers(isSpirit); } }
// Update is called once per frame void Update() { // On ecrit le texte des ames et morts. setText(); // Menu Pause if (Input.GetKeyDown(KeyCode.Escape)) { if (Time.timeScale != 0) { pause(); } else { reprendre(); } } // Gere le changement de direction du joueur Flip(); // On allour un temps entre chaque action du joueur pour eviter 2 actions consecutives non voulues if (isActivating) { timer = Time.time; isActivating = false; isTimerOn = true; } if (isTimerOn && Time.time > timer + period) { isTimerOn = false; } // Si le joueur peut sauter et qu'il veut sauter, il saute if ((rb.velocity.y == 0 || isGrounded) && Input.GetButtonDown("Jump")) { rb.isKinematic = false; animator.SetBool("isGround", false); rb.AddForce(new Vector2(0f, jumpSpeed), ForceMode2D.Impulse); } // Changement de vue //- Verification de l’appui du bouton « touche haut » clavier. //- Changement de l’attribut booleen isSpirit du player, correspondant au mode Physique ou Esprit. //- Changement de l’animation du player. //- On recupere les tableaux des elements de notre GameObject Level. //- Pour chaque tableau, on parcourt les elements //- On recupere l’element, on change son attribut isSpirit. //- On desactive l’element si c’est un element physique et qu’on est en mode esprit, ou si c’est //un element spirituel et qu’on est en mode physique. On active l’element sinon. if (Input.GetButtonDown("Switch")) { isSpirit = !isSpirit; animator.SetBool("isSpirit", isSpirit); int lengthActionneurs = level.actionneurs.Length; int lengthEnnemis = level.ennemis.Length; int lengthCadavres = level.cadavres.Length; int lengthPlateformes = level.plateformes.Length; int lengthMurs = level.murs.Length; int lengthBackground = level.backgrounds.Length; for (int i = 0; i < lengthActionneurs; i++) { Actionneur actionneur = (Actionneur)level.actionneurs[i]; actionneur.isSpirit = isSpirit; actionneur.gameObject.SetActive(actionneur.statut == 0 || isSpirit && actionneur.statut == 2 || !isSpirit && actionneur.statut == 1); } for (int i = 0; i < lengthEnnemis; i++) { Ennemi ennemi = (Ennemi)level.ennemis[i]; ennemi.isSpirit = isSpirit; ennemi.gameObject.SetActive(ennemi.statut == 0 || isSpirit && ennemi.statut == 2 || !isSpirit && ennemi.statut == 1); } for (int i = 0; i < lengthCadavres; i++) { Cadavre cadavre = (Cadavre)level.cadavres[i]; cadavre.isSpirit = isSpirit; } for (int i = 0; i < lengthPlateformes; i++) { Plateforme plateforme = (Plateforme)level.plateformes[i]; plateforme.isSpirit = isSpirit; if (!(plateforme.statut == 0 || isSpirit && plateforme.statut == 2 || !isSpirit && plateforme.statut == 1)) { for (int j = 0; j < plateforme.transform.childCount; j++) { Transform objet = plateforme.transform.GetChild(j); if (objet.name == "Player") { groundChecker.getTriggers().Clear(); objet.transform.parent = null; } } } plateforme.gameObject.SetActive(plateforme.statut == 0 || isSpirit && plateforme.statut == 2 || !isSpirit && plateforme.statut == 1); } for (int i = 0; i < lengthMurs; i++) { Mur mur = (Mur)level.murs[i]; mur.isSpirit = isSpirit; mur.gameObject.SetActive(mur.statut == 0 || isSpirit && mur.statut == 2 || !isSpirit && mur.statut == 1); } for (int i = 0; i < lengthBackground; i++) { backgroundAdapter back = (backgroundAdapter)level.backgrounds[i]; back.changeUnivers(isSpirit); } } }
// Update is called once per frame void FixedUpdate() { // etape 1 : aller vers le cadavre if (etat == 0) { Vector2 velocity = rb.velocity; velocity.x = moveSpeed; animator.SetFloat("hSpeed", Mathf.Abs(rb.velocity.x)); rb.velocity = velocity; } // etape 4 : si l'ame est liberee, lancer la suite du scenario if (!level.cadavres[0].isActiveAndEnabled && ame.transform.position == init) { ame.gameObject.SetActive(true); ame.envoleToi(); } // etape 3 : liberer l'ame if (etat == 2) { etat = 3; level.cadavres[0].activate(); } // etape 2 : stopper le Switcher et passer en mode esprit if (etat == 1) { // on stoppe le Switcher Vector3 theScale = transform.localScale; theScale.x *= -1; transform.localScale = theScale; animator.SetFloat("hSpeed", 0); etat = 2; // on passe en mode esprit en passant tous les elements de la scene en mode esprit isSpirit = !isSpirit; animator.SetBool("isSpirit", isSpirit); int lengthCadavres = level.cadavres.Length; int lengthPlateformes = level.plateformes.Length; int lengthBackground = level.backgrounds.Length; for (int i = 0; i < lengthCadavres; i++) { Cadavre cadavre = (Cadavre)level.cadavres[i]; cadavre.isSpirit = isSpirit; } for (int i = 0; i < lengthPlateformes; i++) { Plateforme plateforme = (Plateforme)level.plateformes[i]; plateforme.isSpirit = isSpirit; if (!(plateforme.statut == 0 || isSpirit && plateforme.statut == 2 || !isSpirit && plateforme.statut == 1)) { for (int j = 0; j < plateforme.transform.childCount; j++) { Transform objet = plateforme.transform.GetChild(j); if (objet.name == "Player") { groundChecker.getTriggers().Clear(); objet.transform.parent = null; } } } plateforme.gameObject.SetActive(plateforme.statut == 0 || isSpirit && plateforme.statut == 2 || !isSpirit && plateforme.statut == 1); } for (int i = 0; i < lengthBackground; i++) { backgroundAdapter back = (backgroundAdapter)level.backgrounds[i]; back.changeUnivers(isSpirit); } } }