/// <summary>
    /// Basic function to instantiate a projectile
    /// </summary>
    /// <param name="dir"></param>
    /// <param name="force"></param>
    void LaunchProjectile(Vector2 dir, float force)
    {
        GameObject      projectileObject = Instantiate(projectilePrefab, rigidbody2D.position + Vector2.up * 1f, Quaternion.identity);
        ProjectileEnemy projectile       = projectileObject.GetComponent <ProjectileEnemy>();

        projectile.Launch(dir, force);
    }
Beispiel #2
0
    void OnTriggerEnter(Collider other)
    {
        bool  isHit  = false;
        float damage = 0;

        if (healthController.IsAlive)
        {
            ProjectileEnemy projectile = other.gameObject.GetComponent <ProjectileEnemy>();
            if (projectile != null)
            {
                projectile.Die();
                damage = projectile.damage;
                isHit  = true;
            }
            else
            {
                Badguy b = other.gameObject.GetComponent <Badguy>();
                if (b != null)
                {
                    damage = b.healthController.Health;
                }
            }
        }


        if (isHit)
        {
            healthController.Damage(damage);
            GameDirector.Explosion(transform.position, 0.2f);
        }
    }
Beispiel #3
0
    void OnTriggerEnter2D(Collider2D collision)
    {
        ProjectileEnemy  missile       = collision.gameObject.GetComponent <ProjectileEnemy>();
        GuidedProjectile guidedMissile = collision.gameObject.GetComponent <GuidedProjectile>();
        Laser            laser         = collision.gameObject.GetComponent <Laser>();
        bool             laserPassed   = true;

        if (missile)
        {
            Crash();

            if (health <= 0)
            {
                Die();
            }
        }
        if (guidedMissile)
        {
            Crash();

            if (health <= 0)
            {
                Die();
            }
        }
        if (laser && laserPassed)
        {
            Crash();
            if (health <= 0)
            {
                Die();
            }
            laserPassed = false;
        }
    }
Beispiel #4
0
    private void Start()
    {
        _projectileObject = Instantiate(projectilePrefab, transform, true);
        _projectileObject.SetActive(false);
        _projectileEnemy = _projectileObject.GetComponent <ProjectileEnemy>();

        _player   = GameObject.FindWithTag("Player");
        _animator = GetComponent <Animator>();
    }
Beispiel #5
0
    override public IEnumerator Perform(Enemy enemyScript)
    {
        yield return(new WaitForSeconds(1));

        projectiles = new List <GameObject>();

        if (animator == null)
        {
            animator = enemyScript.GetComponent <Animator>();
        }

        Vector2 playerPos         = enemyScript.player.transform.position;
        Vector2 enemyPos          = enemyScript.transform.position;
        Vector2 directionToPlayer = (playerPos - enemyPos).normalized;

        if (animator)
        {
            animator.SetFloat("Move X", directionToPlayer.x);
        }
        else
        {
            Debug.Log("NO ANIMATOR NAJAAA");
        }

        int space = numberOfProjectile - 1;

        for (int i = 0; i < numberOfProjectile; i++)
        {
            Vector2    axis             = Vector2.Perpendicular(directionToPlayer).normalized;
            Vector2    offset           = axis * projectileOffset * (i - (float)space / 2);
            GameObject projectileObject = Instantiate(projectilePrefab, enemyPos + directionToPlayer + offset, Quaternion.identity);


            ProjectileEnemy projectile = projectileObject.GetComponent <ProjectileEnemy>();
            Vector2         dir        = directionToPlayer;
            if (focus)
            {
                Vector2 bulletPos = projectile.transform.position;
                dir = (playerPos - bulletPos).normalized;
            }
            projectile.DelayLaunch(dir, 600, delayStartTime);
        }

        yield return(base.Perform(enemyScript));
    }