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