]> git.lizzy.rs Git - SuperMouseAdventure.git/blob - 2DGame/Assets/Scripts/Enemies/EnemyCollision.cs
Implement stunning
[SuperMouseAdventure.git] / 2DGame / Assets / Scripts / Enemies / EnemyCollision.cs
1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
4
5 public class EnemyCollision : MonoBehaviour
6 {
7     GameObject mouse;
8
9     SpriteRenderer spriteRenderer;
10
11     TrailRenderer trailRenderer;
12
13     PowerUps powerUps;
14
15     Health health;
16
17     EnemyScript eS;
18
19     JumpOnEnemies jumpOnEnemies;
20
21     public float flashingTime = 0.1f;
22
23     private bool invulnerable = false;
24
25     // Start is called before the first frame update
26     void Start()
27     {
28         mouse = GameObject.FindGameObjectWithTag("Player");
29         spriteRenderer = mouse.GetComponent<SpriteRenderer>();
30         trailRenderer = mouse.GetComponent<TrailRenderer>();
31         powerUps = mouse.GetComponent<PowerUps>();
32         health = mouse.GetComponent<Health>();
33         eS = GetComponent<EnemyScript>();
34         jumpOnEnemies = GameObject.FindGameObjectWithTag("GroundCheck").GetComponent<JumpOnEnemies>();
35     }
36
37     private void OnCollisionEnter2D(Collision2D collision)
38     {
39         if (collision.gameObject.CompareTag("Player") && !invulnerable)
40         {
41             powerUps.mouseIsGardener = false;
42             health.DealDamage(eS.enemyDamage);
43
44             Vector2 mousePos = collision.gameObject.GetComponent<Transform>().position;
45             Vector2 enemyPos = transform.position;
46
47             Vector2 knockback = mousePos - enemyPos;
48             knockback.Normalize();
49             knockback *= eS.enemyDamage * 36;
50
51             collision.gameObject.GetComponent<Rigidbody2D>().velocity += knockback;
52
53             FindObjectOfType<AudioManager>().Play("drsh");
54             StartCoroutine ("GetInvincible");
55         }
56     }
57
58     IEnumerator GetInvincible()
59     {
60         invulnerable = true;
61         jumpOnEnemies.stunned = true;
62         Physics2D.IgnoreLayerCollision(7, 8, true);
63         for (int i = 0; i < 4; i++)
64         {
65             spriteRenderer.enabled = false;
66             trailRenderer.enabled = false;
67             yield return new WaitForSeconds(flashingTime);
68             spriteRenderer.enabled = true;
69             trailRenderer.enabled = true;
70             yield return new WaitForSeconds(flashingTime);
71         }
72         Physics2D.IgnoreLayerCollision(7, 8, false);
73         jumpOnEnemies.stunned = false;
74         invulnerable = false;
75     }
76 }