void OnTriggerExit2D(Collider2D coll) { EndGame = FindObjectOfType <Finish>(); if (coll.tag == "Player") // Nous recuperons le tag de l'objet en colision { Out = true; EndGame.MakeDead(); } else { Destroy(coll.transform.root.gameObject); } }
// Update is called once per frame void Update() { nlife = GetComponent <PlayerInventory>().life; if (nlife > 0) { //SHOOT************************************************************** bool shoot = Input.GetButtonDown("Fire1"); //shoot |= Input.GetButtonDown("Fire2"); // Astuce pour ceux sous Mac car Ctrl + flèches est utilisé par le système if (shoot) { WeaponScript weapon = GetComponent <WeaponScript>(); if (weapon != null) { // false : le joueur n'est pas un ennemi weapon.Attack(false); } } //******************************************************************* //JUMPS************************************************************** grounded = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, groundLayer); if (grounded == true) { countJumps = true; } if (grounded && (Input.GetKeyDown(KeyCode.UpArrow))) { // On verifie si l'utilisateur est au sol, et si l'input jump est en appui playerAnim.SetBool("IsGrounded", false); // On defini le parametre danimation IsGrounded a faux car nous nous aprettons a sauter playerRB.velocity = new Vector2(playerRB.velocity.x, 0f); // On defini la velocite y a 0 pour etre sur d'avoir la même hauteur quelque soit le contexte playerRB.AddForce(new Vector2(0, jumpPower), ForceMode2D.Impulse); // On ajoute de la force sur notre rigidbody afin de le faire s'envoler, on precise bien un forcement a impulse pour avoir toute la force d'un seul coup grounded = false; // On defini notre grounded a false pour garder en memoire l'etat du personnage countJumps = true; } if (canDoubleJumps) { if (countJumps == true && (Input.GetKeyDown(KeyCode.UpArrow))) { playerRB.velocity = new Vector2(playerRB.velocity.x, 0f); playerRB.AddForce(new Vector2(0, jumpPower), ForceMode2D.Impulse); countJumps = false; } } //******************************************************************* //print(countJumps); // on utilise ici notre moteur physique pour crér un petit cercle àn endroit bien precis(position du ground check personnage) // On defini aussi son radius pour dessiner le cercle // Et on defini le layer sur lequel on veut checker l'overlap // Si le cercle overlap avec le ground layer, ç va nous renvoyer vrai, car le player est au sol // Sinon cela veut dire que le personnage est en l'air // Cela va nous permetre aussi de declencer la condition permettant d'appliquer la force sur notre personnage //MOVEMENT************************************************************* playerAnim.SetBool("IsGrounded", grounded); // On utilise donc cette information pour mettre a jour note animator float move = Input.GetAxis("Horizontal"); // Rédiger ci dessous le code permettant de déerminer quand le player doit se retourner if (canMove == true) { if (move < 0 && facingRight || move > 0 && !facingRight) { Flip(); } playerRB.velocity = new Vector2(move * maxSpeed, playerRB.velocity.y); // On utilise playerAnim.SetFloat("MoveSpeed", Mathf.Abs(move)); // Defini une valeur pour le float MoveSpeed dans notre animator } else { playerRB.velocity = new Vector2(0, playerRB.velocity.y); // Si movement non autorise, on arrete la velocite playerAnim.SetFloat("MoveSpeed", 0); // on arrete aussi l'animation en cours si on etait en train de courir } //*********************************************************************** //SLEEP****************************************************************** targetTime -= Time.deltaTime; //print("Temps: " + targetTime); if (Input.GetAxis("Horizontal") == 0 && !(Input.GetKeyDown(KeyCode.UpArrow)) && targetTime <= 0) { playerAnim.SetBool("Sleep", true); } if (Input.GetAxis("Horizontal") != 0 || (Input.GetKeyDown(KeyCode.UpArrow))) { playerAnim.SetBool("Sleep", false); targetTime = 3; } //*********************************************************************** if (facingRight) { weapons.transform.eulerAngles = new Vector2(0, 0); weapons.transform.localPosition = new Vector2(0.2f, -0.02f); } else { weapons.transform.eulerAngles = new Vector2(0, 180); weapons.transform.localPosition = new Vector2(-0.2f, -0.02f); } } else { EndGame.MakeDead(); } }