1
using System
.Collections
;
2 using System
.Collections
.Generic
;
5 public class Spikes
: MonoBehaviour
{
8 Vector2 VerticalStartDirection
;
11 float VerticalMaxDistance
;
14 Vector2 HorizontalStartDirection
;
17 float HorizontalMaxDistance
;
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
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
;
47 else if (VerticalStartDirection
== Vector2
.down
)
49 minVertical
= transform
.position
.y
- VerticalMaxDistance
;
53 if (HorizontalStartDirection
== Vector2
.left
)
55 minHorizontal
= transform
.position
.x
- HorizontalMaxDistance
;
58 else if (HorizontalStartDirection
== Vector2
.right
)
60 maxHorizontal
= transform
.position
.x
+ HorizontalMaxDistance
;
65 // Update is called once per frame
68 float step
= speed
* Time
.deltaTime
;
70 if (transform
.position
.x
> maxHorizontal
)
75 else if (transform
.position
.x
< minHorizontal
)
81 if (transform
.position
.y
> maxVertical
)
86 else if (transform
.position
.y
< minVertical
)
95 transform
.Translate(Vector2
.left
* step
, Space
.World
);
99 transform
.Translate(Vector2
.right
* step
, Space
.World
);
104 transform
.Translate(Vector2
.up
* step
, Space
.World
);
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
)
131 col
.gameObject
.GetComponent
<HealthSlider
>().DealDamage(100, transform
.position
, gameObject
);
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
)
150 if (gObject
.tag
== "Shield")