using UnityEngine;
|
|
using System.Collections;
|
|
|
|
public class EnemyController : InteractableObject {
|
|
|
|
|
|
public int health;
|
|
|
|
|
|
private GameObject player;
|
|
private Rigidbody2D playerRigid;
|
|
public GameObject bullet;
|
|
public float shotCoolDown = 0.5f;
|
|
public float initShotWait = 0.0f;
|
|
protected float lastShotTime = 0.0f;
|
|
public GameObject healthDisp;
|
|
|
|
// Use this for initialization
|
|
protected virtual void Start () {
|
|
lastShotTime = Time.time + initShotWait;
|
|
player = GameObject.FindGameObjectWithTag("Player");
|
|
playerRigid = player.GetComponent<Rigidbody2D>();
|
|
healthDisp.SetActive(true);
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void FixedUpdate () {
|
|
if (Time.time - lastShotTime >= shotCoolDown) {
|
|
lastShotTime = Time.time;
|
|
shoot(Vector2.up);
|
|
shoot(Vector2.down);
|
|
shoot(Vector2.left);
|
|
shoot(Vector2.right);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
protected void shoot(Vector2 startVelocity) {
|
|
GameObject bulletClone = (GameObject)Instantiate(bullet, transform.position, transform.rotation);
|
|
MissileController bulletScript = bulletClone.GetComponent<MissileController>();
|
|
bulletScript.startVelocity = startVelocity;
|
|
|
|
if (player != null)
|
|
bulletScript.targetPos = player.transform.position;
|
|
bulletScript.target = player;
|
|
bulletScript.targetRigid = playerRigid;
|
|
bulletScript.ignoreList = GetComponentsInChildren<Collider2D>();
|
|
bulletScript.spawningObject = this;
|
|
|
|
|
|
bulletScript.enabled = true;
|
|
|
|
|
|
}
|
|
|
|
public override void shot() {
|
|
health--;
|
|
//Debug.Log("I got hit, health: " + health);
|
|
if (health <= 0) {
|
|
GameMemory.control.enemyDeath();
|
|
Destroy(gameObject);
|
|
}
|
|
|
|
Vector3 newScale = new Vector3(health / 10f, health / 10f, health / 10f);
|
|
//Debug.Log("new scale = " + newScale);
|
|
|
|
if (healthDisp != null) {
|
|
healthDisp.transform.localScale = newScale;
|
|
}
|
|
transform.localScale = newScale;
|
|
|
|
}
|
|
}
|