/// <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); }
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); } }
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; } }
private void Start() { _projectileObject = Instantiate(projectilePrefab, transform, true); _projectileObject.SetActive(false); _projectileEnemy = _projectileObject.GetComponent <ProjectileEnemy>(); _player = GameObject.FindWithTag("Player"); _animator = GetComponent <Animator>(); }
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)); }