TO SQUASH: Added shooting bars.
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
using UnityEngine;
|
||||
|
||||
public class VerticalBar : MonoBehaviour
|
||||
{
|
||||
public float firingSpeed = 0.03f;
|
||||
|
||||
public GameObject verticalBarrierPrefab;
|
||||
|
||||
public bool canFireTop = true;
|
||||
|
||||
public bool canFireBottom = true;
|
||||
|
||||
private float firingTimer = 0.0f;
|
||||
|
||||
private Bounds bounds;
|
||||
|
||||
private bool canFire = true;
|
||||
|
||||
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
||||
void Start()
|
||||
{
|
||||
SpriteRenderer spriteRenderer = GetComponent<SpriteRenderer>();
|
||||
bounds = spriteRenderer.bounds;
|
||||
|
||||
var walls = GameObject.FindGameObjectsWithTag("Wall");
|
||||
|
||||
if (walls.Length > 0)
|
||||
{
|
||||
foreach (var wall in walls)
|
||||
{
|
||||
if (wall.GetComponent<Collider2D>().bounds.Intersects(bounds))
|
||||
{
|
||||
canFire = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void FixedUpdate()
|
||||
{
|
||||
if (canFire)
|
||||
{
|
||||
firingTimer += Time.fixedDeltaTime;
|
||||
|
||||
if (firingTimer >= firingSpeed)
|
||||
{
|
||||
if (canFireTop)
|
||||
{
|
||||
Vector3 topSide = new Vector3(
|
||||
bounds.center.x,
|
||||
bounds.max.y + (bounds.size.y / 2.0f),
|
||||
bounds.center.z
|
||||
);
|
||||
|
||||
var top = Instantiate(verticalBarrierPrefab, topSide, Quaternion.identity);
|
||||
var topBarScript = top.GetComponent<VerticalBar>();
|
||||
topBarScript.firingSpeed = firingSpeed;
|
||||
topBarScript.canFireBottom = false;
|
||||
|
||||
Physics2D.IgnoreCollision(
|
||||
top.GetComponent<Collider2D>(),
|
||||
GetComponent<Collider2D>(),
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
if (canFireBottom)
|
||||
{
|
||||
Vector3 bottomSide = new Vector3(
|
||||
bounds.center.x,
|
||||
bounds.min.y - (bounds.size.y / 2.0f),
|
||||
bounds.center.z
|
||||
);
|
||||
var bottom = Instantiate(verticalBarrierPrefab, bottomSide, Quaternion.identity);
|
||||
var bottomBarScript = bottom.GetComponent<VerticalBar>();
|
||||
bottomBarScript.firingSpeed = firingSpeed;
|
||||
bottomBarScript.canFireTop = false;
|
||||
|
||||
Physics2D.IgnoreCollision(
|
||||
bottom.GetComponent<Collider2D>(),
|
||||
GetComponent<Collider2D>(),
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
canFire = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user