]> git.lizzy.rs Git - SuperMouseAdventure.git/blob - 2DGame/Assets/Scripts/Gegner/EnemyCollision.cs
Invincibility Frames v1.1
[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     private float invincibilityFrames;
21     public float startInvincibilityFrames = 0.2f;
22     
23     private bool invulnerable = false;
24
25     // Start is called before the first frame update
26     void Start()
27     {
28         spriteRenderer = mouse.GetComponent<SpriteRenderer>();
29         trailRenderer = mouse.GetComponent<TrailRenderer>();
30         powerUps = mouse.GetComponent<PowerUps>();
31         health = mouse.GetComponent<Health>();
32         eS = GetComponent<EnemyScript>();
33         invincibilityFrames = startInvincibilityFrames;
34     }
35
36     // Update is called once per frame
37     void Update()
38     {
39         print(invincibilityFrames);
40         print(invulnerable);
41     }
42
43     private void OnCollisionEnter2D(Collision2D collision)
44     {
45         if (collision.gameObject.CompareTag("Player") && invulnerable == false)
46         {
47             powerUps.mouseIsGardener = false;
48             health.GetDamage(eS.enemyDamage);
49             StartCoroutine ("GetInvincible");
50         }
51     }
52
53     IEnumerator GetInvincible()
54     {
55         invulnerable = true;
56         Physics2D.IgnoreLayerCollision(7, 8, true);
57         while (invincibilityFrames > 0)
58         {
59             invincibilityFrames -= Time.deltaTime;
60             spriteRenderer.enabled = false;
61             trailRenderer.enabled = false;
62             yield return new WaitForSeconds(0.3f);
63             spriteRenderer.enabled = true;
64             trailRenderer.enabled = true;
65             yield return new WaitForSeconds(0.3f);
66         }
67         Physics2D.IgnoreLayerCollision(7, 8, false);
68         spriteRenderer.enabled = true;
69         trailRenderer.enabled = true;
70         invincibilityFrames = startInvincibilityFrames;
71         invulnerable = false;
72     }
73 }