예제 #1
0
    public void Hit(Bullet bullet)
    {
        // Stun
        Stun(bullet.transform.up);

        float damage = EnemyFactory.getInstance().calculateDamage(this);

        this.Life -= damage;
        GameObject text = Instantiate(DamageText, transform.position, Quaternion.identity) as GameObject;

        text.transform.SetParent(GameObject.Find("OverlayCanvas").transform);
        text.GetComponent <Text>().text = damage.ToString();
        float scaleX = 4 * (Life / MaxLife) + 0.1f;

        if (scaleX < 0)
        {
            scaleX = 0;
        }
        transform.FindChild("HealthBar").gameObject.SetActive(true);
        transform.FindChild("HealthBar").localScale = new Vector3(scaleX, 1, 1);
        //Debug.Log("Damage " + damage + ", remaining life " + this.Life);
        if (this.Life <= 0)
        {
            PowerUpFactory.getInstance().InstantiatePowerUp(this.PowerUpData, transform.position, Quaternion.identity);
            Destroy(this.gameObject);
        }
        else
        {
        }
        Destroy(bullet.gameObject);
    }
예제 #2
0
    public EnemyData getBoss(int roomID, float lifeModifier)
    {
        EnemyData bossData = new EnemyData();

        bossData.type = getRandomBossIndex();
        WeaponData currentPlayerWeapon = Globals.GetPlayerController().WeaponData;

        bossData.Life        = lifeModifier * (((currentPlayerWeapon.Tier * Random.Range(5f, 20f))) + ((roomID * 5) * Random.Range(1f, 1.5f)));//Mathf.RoundToInt((27 + (currentPlayerWeapon.Tier * 5)) * 5 / (dmg_calc(roomID, currentPlayerWeapon, bossData)));
        bossData.PowerUpData = PowerUpFactory.getInstance().GetRandomPowerUp();
        bossData.Scale       = Random.Range(Constants.ENEMY_MIN_SCALE, Constants.ENEMY_MAX_SCALE);
        addRandomColorOverlay(bossData);

        return(bossData);
    }