private void FireBullet() { //Pull bullet Reference from Pooler bullet = ObjectPooler.sharedInstance.GetPooledObject("interceptorBullet"); if (bullet != null) //Peform Null-Check on bullet { //Set bullet position & rotation to that of player character bullet.transform.position = gameObject.transform.position; bullet.transform.rotation = gameObject.transform.rotation; bullet.SetActive(true); //Spawn Bullet Physics2D.IgnoreCollision(bullet.GetComponent <CircleCollider2D>(), GetComponent <PolygonCollider2D>()); //Create collision exception for bullet col & interceptor col //Pull Reference to Neccesary bullet Components Rigidbody2D bulletSpawnedRB = bullet.GetComponent <Rigidbody2D>(); EnemyBullet bulletEnemyBullet = bullet.GetComponent <EnemyBullet>(); //Set bullet velocity Vector3 posDiff = player.transform.position - transform.position; //Calculate difference in position between player and enemy bulletSpawnedRB.velocity = new Vector2((posDiff.x * bulletEnemyBullet.GetBulletSpeed()), (posDiff.y * bulletEnemyBullet.GetBulletSpeed())); } }
private void FireBullet() { switch (desiredDirection) { //If Waveracer is moving horizontally, fire bullets up/down case (waveracerDirection.horizontal): for (int i = 0; i < 2; i++) { //Pull bullet Reference from Pooler bullet = ObjectPooler.sharedInstance.GetPooledObject("waveracerBullet"); bullet.transform.position = gameObject.transform.position; bullet.transform.rotation = gameObject.transform.rotation; bullet.SetActive(true); //Spawn Bullet Physics2D.IgnoreCollision(bullet.GetComponent <CircleCollider2D>(), GetComponent <PolygonCollider2D>()); //Create collision exception for bullet col & Waveracer col //Pull Reference to Neccesary bullet Components Rigidbody2D bulletSpawnedRB = bullet.GetComponent <Rigidbody2D>(); EnemyBullet bulletEnemyBullet = bullet.GetComponent <EnemyBullet>(); //Set bullet velocity if (i == 0) { bulletSpawnedRB.AddForce(new Vector2(0, 1) * bulletEnemyBullet.GetBulletSpeed(), ForceMode2D.Impulse); //Fire bullet up } else if (i == 1) { bulletSpawnedRB.AddForce(new Vector2(0, -1) * bulletEnemyBullet.GetBulletSpeed(), ForceMode2D.Impulse); //Fire bullet up } } break; //If Waveracer is moving vertically, fire bullets left/right case (waveracerDirection.vertical): for (int i = 0; i < 2; i++) { //Pull bullet Reference from Pooler bullet = ObjectPooler.sharedInstance.GetPooledObject("waveracerBullet"); bullet.transform.position = gameObject.transform.position; bullet.transform.rotation = gameObject.transform.rotation; bullet.SetActive(true); //Spawn Bullet Physics2D.IgnoreCollision(bullet.GetComponent <CircleCollider2D>(), GetComponent <PolygonCollider2D>()); //Create collision exception for bullet col & Waveracer col //Pull Reference to Neccesary bullet Components Rigidbody2D bulletSpawnedRB = bullet.GetComponent <Rigidbody2D>(); EnemyBullet bulletEnemyBullet = bullet.GetComponent <EnemyBullet>(); //Set bullet velocity if (i == 0) { bulletSpawnedRB.AddForce(new Vector2(1, 0) * bulletEnemyBullet.GetBulletSpeed(), ForceMode2D.Impulse); //Fire bullet right } else if (i == 1) { bulletSpawnedRB.AddForce(new Vector2(-1, 0) * bulletEnemyBullet.GetBulletSpeed(), ForceMode2D.Impulse); //Fire bullet left } } break; } }