Modification start date
[BattleCats.git] / Assets / Scripts / Puzzles / Spikes.cs
blob82e622a944dd0986671d0cd33e939dc085eb312c
1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
5 public class Spikes : MonoBehaviour {
7 [SerializeField]
8 Vector2 VerticalStartDirection;
10 [SerializeField]
11 float VerticalMaxDistance;
13 [SerializeField]
14 Vector2 HorizontalStartDirection;
16 [SerializeField]
17 float HorizontalMaxDistance;
19 [SerializeField]
20 float speed;
22 private List<GameObject> currentCollisions = new List<GameObject>();
24 private float minVertical, maxVertical, minHorizontal, maxHorizontal;
25 private float timerForStay;
27 private bool moveRight, moveLeft, moveUp, moveDown;
28 // Use this for initialization
29 void Start ()
31 moveRight = false;
32 moveUp = false;
33 moveLeft = false;
34 moveDown = false;
35 timerForStay = 0;
37 minVertical = transform.position.y;
38 maxVertical = transform.position.y;
39 minHorizontal = transform.position.x;
40 maxHorizontal = transform.position.x;
42 if (VerticalStartDirection == Vector2.up)
44 maxVertical = transform.position.y + VerticalMaxDistance;
45 moveUp = true;
47 else if (VerticalStartDirection == Vector2.down)
49 minVertical = transform.position.y - VerticalMaxDistance;
50 moveDown = true;
53 if (HorizontalStartDirection == Vector2.left)
55 minHorizontal = transform.position.x - HorizontalMaxDistance;
56 moveLeft = true;
58 else if (HorizontalStartDirection == Vector2.right)
60 maxHorizontal = transform.position.x + HorizontalMaxDistance;
61 moveRight = true;
65 // Update is called once per frame
66 void Update ()
68 float step = speed * Time.deltaTime;
70 if (transform.position.x > maxHorizontal)
72 moveLeft = true;
73 moveRight = false;
75 else if (transform.position.x < minHorizontal)
77 moveRight = true;
78 moveLeft = false;
81 if (transform.position.y > maxVertical)
83 moveDown = true;
84 moveUp = false;
86 else if (transform.position.y < minVertical)
88 moveUp = true;
89 moveDown = false;
93 if (moveLeft)
95 transform.Translate(Vector2.left * step, Space.World);
97 else if (moveRight)
99 transform.Translate(Vector2.right * step, Space.World);
102 if (moveUp)
104 transform.Translate(Vector2.up * step, Space.World);
106 else if (moveDown)
108 transform.Translate(Vector2.down * step, Space.World);
112 void OnTriggerEnter2D(Collider2D col)
114 currentCollisions.Add(col.gameObject);
116 if (!isShieldColliding(currentCollisions))
118 col.gameObject.GetComponent<HealthSlider>().DealDamage(100, transform.position, gameObject);
122 void OnTriggerStay2D(Collider2D col)
124 if (!isShieldColliding(currentCollisions))
126 timerForStay += Time.deltaTime;
128 if (timerForStay > 5.0f)
130 Debug.Log (col.tag);
131 col.gameObject.GetComponent<HealthSlider>().DealDamage(100, transform.position, gameObject);
132 timerForStay = 0;
138 void OnTriggerExit2D(Collider2D col)
140 print("out is" + col.gameObject.tag);
141 currentCollisions.Remove(col.gameObject);
144 private bool isShieldColliding(List<GameObject> listOfCollidedObjects)
146 foreach (GameObject gObject in listOfCollidedObjects)
148 if (gObject != null)
150 if (gObject.tag == "Shield")
151 return true;
154 return false;