コード例 #1
0
    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()));
        }
    }
コード例 #2
0
    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;
        }
    }