Example #1
0
    void spawnProjectileDualBullets(BulletTypes type, float facingFloat, float verticalOffset)
    {
        bulletCost++;
        if (bulletCost >= 2)
        {
            bulletCost = 0;
            LoseKinergy(1);
        }
        BoxCollider box = this.GetComponent <BoxCollider> ();
        Vector3     spawnPosition;

        if (facingFloat == 1f)
        {
            spawnPosition = new Vector3(box.bounds.max.x + 0.35f, box.bounds.center.y + verticalOffset, box.bounds.max.z + 0.01f);
        }
        else
        {
            spawnPosition = new Vector3(box.bounds.min.x - 0.35f, box.bounds.center.y + verticalOffset, box.bounds.max.z + 0.01f);
        }
        var                  bullet   = (GameObject)Instantiate(projectileDualBullets, spawnPosition, Quaternion.identity, this.transform);
        SpriteRenderer       sr       = bullet.GetComponent <SpriteRenderer> ();
        ProjectileProperties projProp = bullet.GetComponent <ProjectileProperties> ();

        if (facingFloat != 1f)
        {
            sr.flipX = true;
        }
        projProp.Fire(facingFloat, 3, 1f, type);
    }
Example #2
0
 public void SetBulletType(BulletTypes type)
 {
     // set sprite image & collider radius
     sprite.sprite        = bulletData[(int)type].sprite;
     cc2d.radius          = bulletData[(int)type].radius;
     transform.localScale = bulletData[(int)type].scale;
 }
    public Bullet CreateBullet(BulletTypes type, Vector2 pos)
    {
        Vector2 randV2 = UnityEngine.Random.insideUnitCircle.normalized * 5;

        GameObject toRetObj = null;
        IPoolable  poolable = ObjectPool.Instance.RetrieveFromPool(type);

        if (poolable != null)
        {
            toRetObj = poolable.GetGameObject;
        }
        else
        {
            toRetObj = _CreateBullet(type).gameObject;
        }
        Bullet toRet = toRetObj.GetComponent <Bullet>();

        if (!toRet)
        {
            Debug.LogError("Something went wrong in bullet factory, object: " + toRetObj.name + " did not contain a bullet script. Returning Null");
        }
        else
        {
            toRet.transform.position = pos;

            BulletManager.Instance.Addbullet(toRet);
        }



        return(toRet);
    }
Example #4
0
    public void spawnProjectile(BulletTypes type)
    {
        BoxCollider box         = this.GetComponent <BoxCollider> ();
        float       facingFloat = (facing == FacingDirection.East) ? 1f : -1f;

        if (type == BulletTypes.KinergyBulletFront)
        {
            verticalOffset = 0.008f;
            spawnProjectileKinergyBullets(type, verticalOffset, facingFloat);
        }
        else if (type == BulletTypes.KinergyBulletBack)
        {
            verticalOffset = 0.008f;
            spawnProjectileKinergyBullets(type, verticalOffset, facingFloat);
        }
        else if (type == BulletTypes.KinergyBulletUp)
        {
            verticalOffset = 0.02f;
            spawnProjectileKinergyBullets(type, verticalOffset, facingFloat);
        }
        else if (type == BulletTypes.DualBullets1 || type == BulletTypes.DualBullets2 || type == BulletTypes.DualBullets3 ||
                 type == BulletTypes.DualBullets4 || type == BulletTypes.DualBullets5 || type == BulletTypes.DualBullets6)
        {
            spawnProjectileDualBullets(type, facingFloat, verticalOffset);
        }
        else if (type == BulletTypes.Nuke)
        {
            spawnProjectileNuke(type, facingFloat, verticalOffset);
        }
    }
Example #5
0
    public GameObject createBullet(BulletTypes type = BulletTypes.RANDOM)
    {
        if (type == BulletTypes.RANDOM)
        {
            var randombullet = Random.Range(0, 3);
            type = (BulletTypes)randombullet;
        }

        GameObject tempBullet = null;

        switch (type)
        {
        case BulletTypes.REGULAR:
            tempBullet = Instantiate(regularBullet);
            tempBullet.GetComponent <BulletController>().damage = 10;
            break;

        case BulletTypes.FAT:
            tempBullet = Instantiate(fatBullet);
            tempBullet.GetComponent <BulletController>().damage = 20;
            break;

        case BulletTypes.PULSING:
            tempBullet = Instantiate(pulsinBullet);
            tempBullet.GetComponent <BulletController>().damage = 30;
            break;
        }
        tempBullet.transform.parent = transform;
        tempBullet.SetActive(false);
        return(tempBullet);
    }
Example #6
0
 public Bullet(Vector2 Position, Color[] Mask, int AnimationIndex, AnimatedSprite Clone, BulletTypes BulletType = BulletTypes.Normal)
     : base(Clone.ActiveSprite, Mask, Clone.AnimationFrameCount, Clone.Origin, Clone.AnimationSpeed)
 {
     this.Position   = Position;
     SpriteSource.X  = AnimationIndex * SpriteWidth;
     Speed           = new Vector2();
     this.BulletType = BulletType;
 }
Example #7
0
        private HashSet <BaseBulletController> GetBulletHashSet(BulletTypes type)
        {
            if (!_bulletPool.ContainsKey(type))
            {
                _bulletPool[type] = new HashSet <BaseBulletController>();
            }

            return(_bulletPool[type]);
        }
Example #8
0
 public BulletConfig(BulletTypes bulletType, float maxVelocity, Texture2D texture, Rectangle drawRectangle, float initialDamage, float bounce, TimeSpan fireDelay)
 {
     BulletType    = bulletType;
     MaxVelocity   = maxVelocity;
     Texture       = texture;
     DrawRectangle = drawRectangle;
     InitialDamage = initialDamage;
     Bounce        = bounce;
     FireDelay     = fireDelay;
 }
Example #9
0
        public void Construct(float speed, float lifeTime, BulletTypes type)
        {
            _type     = type;
            _speed    = speed;
            _lifeTime = lifeTime;

            _renderer.material = type == BulletTypes.FromEnemy ? _enemyMaterial : _playerMaterial;

            _startTime = Time.realtimeSinceStartup;
        }
Example #10
0
    public void SpawnBullet(BulletTypes bulletType, Vector3 start, Vector3 targetPos, float shooterSpeed = 0)
    {
        GameObject tempMyBullet = Instantiate(Bullet, start, Quaternion.identity) as GameObject;



        if (bulletType == BulletTypes.Medium || bulletType == BulletTypes.FastMedium)
        {
            tempMyBullet.transform.localScale *= 5;
        }

        if (bulletType == BulletTypes.Big || bulletType == BulletTypes.FastBig)
        {
            tempMyBullet.transform.localScale *= 20;
        }

        targetPos = targetPos - start;

        tempMyBullet.transform.rotation = Quaternion.Euler(0, 0, Mathf.Atan2(targetPos.y, targetPos.x) * Mathf.Rad2Deg);

        Vector3 velocity = tempMyBullet.transform.rotation * Vector3.right;


        if (bulletType == BulletTypes.Small)
        {
            velocity *= SmallBulletSpeed + shooterSpeed;
        }

        if (bulletType == BulletTypes.FastSmall)
        {
            velocity *= FastSmallBulletSpeed + shooterSpeed;
        }

        if (bulletType == BulletTypes.Medium)
        {
            velocity *= MediumBulletSpeed + shooterSpeed;
        }

        if (bulletType == BulletTypes.FastMedium)
        {
            velocity *= FastMediumBulletSpeed + shooterSpeed;
        }

        if (bulletType == BulletTypes.Big)
        {
            velocity *= BigBulletSpeed + shooterSpeed;
        }

        if (bulletType == BulletTypes.FastBig)
        {
            velocity *= FastBigBulletSpeed + shooterSpeed;
        }

        tempMyBullet.GetComponent <Rigidbody2D>().AddRelativeForce(velocity);
    }
Example #11
0
        public GameObject GetBullet(BulletTypes type)
        {
            IPoolable entity = AllocateEntity(bulletPools[(int)type]);

            if (entity == null)
            {
                return(null);
            }

            return(entity.GetGameObject());
        }
Example #12
0
    public void AddToPool(BulletTypes bulletTypes, IPoolable iPoolableBulletStack)
    {
        if (!pulledBullet.ContainsKey(bulletTypes))
        {
            pulledBullet.Add(bulletTypes, new Stack <IPoolable>());
        }
        pulledBullet[bulletTypes].Push(iPoolableBulletStack);

        iPoolableBulletStack.GetGameObject.transform.SetParent(objectPoolParent);
        iPoolableBulletStack.GetGameObject.SetActive(false);
        iPoolableBulletStack.Pooled();     //Just in case the object wants to be alerted
    }
Example #13
0
 public IPoolable RetrieveFromPool(BulletTypes bulletTypes)
 {
     if (pulledBullet.ContainsKey(bulletTypes) && pulledBullet[bulletTypes].Count > 0)
     {
         IPoolable toRet = pulledBullet[bulletTypes].Pop();
         toRet.GetGameObject.transform.SetParent(null);
         toRet.GetGameObject.SetActive(true);
         toRet.DePooled();  //Just in case the object wants to be alerted
         return(toRet);
     }
     return(null);
 }
Example #14
0
 public Bullet(BulletDatas bulletData)
 {
     switch (bulletType = bulletData.Type) {
         case BulletTypes.Common:
             this.Source = GlobalMethod.GetImage(string.Format("Bullet/{0}.png", bulletData.Code), UriType.Project);
             Offset = new Point(Source.PixelWidth, Source.PixelHeight / 2);
             break;
         case BulletTypes.Animation:
             AnimationBase animation = new AnimationBase() { Code = bulletData.Code, Loop = bulletData.Loop };
             animation.HeartStart();
             this.Children.Add(animation);
             Offset = new Point(animation.Center.X * 2, animation.Center.Y);
             break;
     }
 }
 public void RestoreData()
 {
     _bulletType         = _originalData._bulletType;
     _delayBeforeShoot   = _originalData._delayBeforeShoot;
     _delayAfterShoot    = _originalData._delayAfterShoot;
     _timeScale          = _originalData._timeScale;
     _position           = _originalData._position;
     _direction          = _originalData._direction;
     _bulletAmount       = _originalData._bulletAmount;
     _spreadAngleDegrees = _originalData._spreadAngleDegrees;
     _bulletSpeed        = _originalData._bulletSpeed;
     _bulletDamage       = _originalData._bulletDamage;
     _bulletSize         = _originalData._bulletSize;
     _workOnce           = _originalData._workOnce;
 }
    private Bullet _CreateBullet(BulletTypes bulletTypes)

    {
        if (!bulletPrefabDict.ContainsKey(bulletTypes))
        {
            Debug.LogError("Bullet of name: " + bulletTypes + " not found in bulletDict");
            return(null);
        }

        GameObject newBulletObj = GameObject.Instantiate(bulletPrefabDict[bulletTypes]);

        Bullet newBullet = newBulletObj.GetComponent <Bullet>();

        return(newBullet);
    }
    public void UpdateBulletManager()
    {
        while (BulletsToRemoveStack.Count > 0)
        {
            Bullet      toRemove     = BulletsToRemoveStack.Pop();
            BulletTypes mBulletTypes = toRemove.types;
            if (!bulletDict.ContainsKey(mBulletTypes) || !bulletDict[mBulletTypes].Contains(toRemove))
            {
                Debug.LogError("Stack tried to remove element of type: " + mBulletTypes.ToString() + " but was not found in dictionary ? ");
            }

            else
            {
                bulletDict[mBulletTypes].Remove(toRemove);
                ObjectPool.Instance.AddToPool(toRemove.types, toRemove);//----------------------------------------
                if (bulletDict[mBulletTypes].Count == 0)
                {
                    bulletDict.Remove(mBulletTypes);
                }
            }
        }



        while (BulletsToAddStack.Count > 0)
        {
            Bullet      toAdd        = BulletsToAddStack.Pop();
            BulletTypes aBulletTypes = toAdd.types;

            if (!bulletDict.ContainsKey(aBulletTypes))
            {
                bulletDict.Add(aBulletTypes, new List <Bullet>()
                {
                    toAdd
                });
            }

            else if (!bulletDict[aBulletTypes].Contains(toAdd))
            {
                bulletDict[aBulletTypes].Add(toAdd);
            }

            else
            {
                Debug.LogError("The bullet you are trying to add is already in the bullet dict");
            }
        }
    }
Example #18
0
        public BaseBulletController GetBullet(BulletTypes type)
        {
            BaseBulletController result;

            switch (type)
            {
            case BulletTypes.Laser:
                result = GetBullet(GetBulletHashSet(type));
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(type), type, "Не предусмотрен в программе");
            }

            return(result);
        }
Example #19
0
 public void ShootBullet(BulletTypes bulletType, Transform firePos, bool p1, bool p2)
 {
     if (bulletType.isHoming)
     {
     }
     else if (bulletType.isCharger)
     {
     }
     else
     {
         if (p1)
         {
             player1.InstantiateBullet();
             bullet.RegShoot(p1, p2, player1.facingRight);
         }
     }
 }
Example #20
0
    public void AddBullet(BulletTypes bulletTypes, List <BulletTypes> types)
    {
        var col = stdBullet;

        if (bulletTypes == BulletTypes.Silver)
        {
            col = silverBullet;
        }
        else if (bulletTypes == BulletTypes.Blood)
        {
            col = bloodBullet;
        }
        else if (bulletTypes == BulletTypes.Hellfire)
        {
            col = hellBullet;
        }
        StartCoroutine(RotateRevolverRoll());
        bulletsPlaces[types.Count - 1].color  = Color.white;
        bulletsPlaces[types.Count - 1].sprite = col;
    }
Example #21
0
    public ControllerBullet MakeBullet(BulletTypes bulletType)
    {
        ControllerBullet temp = null;

        switch (bulletType)
        {
        case BulletTypes.defaultBullet: temp = new ControllerDefaultBullet();
            bulletList.Add(temp);
            break;

        case BulletTypes.fastBullet: temp = new ControllerFastBullet();
            bulletList.Add(temp);
            break;

        case BulletTypes.explossiveBullet: temp = new ControllerExplossiveBullet();
            bulletList.Add(temp);
            break;
        }
        temp.OnBulletDestroy += RemoveBullet;
        // Debug.Log(bulletList.Count);
        return(temp);
    }
Example #22
0
    protected static void Shoot(int bulletAmount       = 1, float spreadAngle = 10f, float bulletSpeed = 7f,
                                BulletTypes bulletType = BulletTypes.BossSpikeBullet,
                                Vector3?position       = null, float bulletSize = 1f,
                                Vector2?direction      = null)
    {
        if (position.HasValue == false)
        {
            position = Boss.Instance.transform.position;
        }
        if (direction.HasValue == false)
        {
            direction = Vector2.down;
        }

        float _halfBulletAmount = 0f;
        float _angleStep        = 0f;

        if (bulletAmount > 1)
        {
            _halfBulletAmount = (bulletAmount - 1) / 2f;
            _angleStep        = spreadAngle / _halfBulletAmount / 2f;
        }
        else
        {
            _halfBulletAmount = 0f;
            _angleStep        = 0f;
        }

        for (int i = 0; i < bulletAmount; ++i)
        {
            GameObject bullet = BulletPoolsContainer.Instance.GetObjectFromPool(bulletType);
            (bullet.GetComponent(typeof(IBulletMovement)) as IBulletMovement).SpeedMultiplier = bulletSpeed;
            bullet.transform.position         = position.Value;
            bullet.transform.localScale       = bulletSize * Vector3.one;
            bullet.transform.localEulerAngles = new Vector3(0f, 0f, Vector2.SignedAngle(Vector2.up, direction.Value) + (_angleStep * (i - _halfBulletAmount)));
        }
    }
Example #23
0
 public GameObject GetObjectFromPool(BulletTypes type)
 {
     return(_pools[(int)type].GetObjectFromPool());
 }
Example #24
0
    void Update()
    {
        // Show what bullet type it is currently
        switch (bulletType)
        {
        case BulletTypes.Frozen:
            bulletFaceUI.GetComponent <Renderer>().material.color = Color.blue;
            break;

        case BulletTypes.Fire:
            bulletFaceUI.GetComponent <Renderer>().material.color = Color.red;
            break;

        case BulletTypes.Shock:
            bulletFaceUI.GetComponent <Renderer>().material.color = Color.yellow;
            break;

        case BulletTypes.Normal:
            bulletFaceUI.GetComponent <Renderer>().material.color = Color.black;
            break;

        default:
            bulletFaceUI.GetComponent <Renderer>().material.color = Color.black;
            break;
        }

        if (Input.GetKeyDown("q"))
        {
            if (weaponIndex < 3)
            {
                weaponIndex++;
            }
            ammoCount   = 0;
            reloadTimer = Time.time;
            bulletType  = (BulletTypes)weaponIndex;
        }

        if (Input.GetKeyDown("e"))
        {
            if (weaponIndex > 0)
            {
                weaponIndex--;
            }
            ammoCount   = 0;
            reloadTimer = Time.time;
            bulletType  = (BulletTypes)weaponIndex;
        }

        if (Input.GetKeyDown("r"))
        {
            switch (bulletType)
            {
            case BulletTypes.Frozen:
            case BulletTypes.Fire:
            case BulletTypes.Shock:
                if (ammoCount != 5)
                {
                    ammoCount = 0;
                }
                break;

            case BulletTypes.Normal:
                if (ammoCount != 20)
                {
                    ammoCount = 0;
                }
                break;
            }
        }

        if (ammoCount > 0)
        {
            if (Input.GetKey(KeyCode.X))
            {
                if (shootCooldown <= Time.time)
                {
                    shootCooldown = Time.time + shootInterval;
                    storage       = WeaponSpray(sprayValue);
                    gunRay.SetPosition(0, gunpoint.position);
                    gunRay.SetPosition(1, gunpoint.transform.TransformDirection(0, 0, range) + storage);
                    if (Physics.Raycast(transform.position + new Vector3(0, transform.localScale.y / 4, 0), transform.TransformDirection(0, 0, range) + storage, out hit))
                    {
                        ammoCount--;
                        if (currentTarget != null)
                        {
                            if (!currentTarget.GetComponent <BaseClass>())
                            {
                                currentTarget = null;
                            }
                        }

                        if (currentTarget != hit.transform.gameObject)
                        {
                            if (hit.transform.root.gameObject.GetComponent <BaseClass>())
                            {
                                currentTarget = hit.transform.gameObject;
                                target        = hit.transform.root.gameObject.GetComponent <BaseClass>();
                            }
                            else
                            {
                                currentTarget = null;
                            }
                        }
                        if (currentTarget != null)
                        {
                            target.DamageRecieved(weaponDamage, hit.transform.gameObject);

                            switch (bulletType)
                            {
                            case BulletTypes.Frozen:
                                target.speed = 0.5f;
                                target.enemyUI.UpdateState("Frozen");
                                StartCoroutine(target.Restoration(3));
                                break;

                            case BulletTypes.Fire:
                                StartCoroutine(target.Persistent(1, 20));
                                target.enemyUI.UpdateState("Fire");
                                break;

                            case BulletTypes.Shock:
                                target.speed = 0;
                                target.enemyUI.UpdateState("Shock");
                                StartCoroutine(target.Restoration(2));
                                break;
                            }
                        }
                        GameObject explosion = (GameObject)Instantiate(explosionEffect, hit.point, Quaternion.identity);
                        explosion.GetComponent <ExplosionEffectScript>().bulletState = bulletType.ToString();
                    }
                }
            }
        }
        else
        {
            if (reloadTimer < Time.time)
            {
                if (!reloadedYet)
                {
                    reloadTimer = Time.time + 2;
                    reloadedYet = true;
                }
                else
                {
                    reloadedYet = false;
                    switch (bulletType)
                    {
                    case BulletTypes.Frozen:
                    case BulletTypes.Fire:
                    case BulletTypes.Shock:
                        ammoCount = 5;
                        break;

                    case BulletTypes.Normal:
                        ammoCount = 20;
                        break;
                    }
                }
            }
        }
    }
Example #25
0
        public void ReturnBullet(BulletTypes type, GameObject bullet)
        {
            IPoolable entity = bullet.GetComponent <IPoolable>();

            DeallocateEntity(bulletPools[(int)type], entity);
        }
Example #26
0
 public void ReturnObjectToPool(BulletTypes type, GameObject go)
 {
     _pools[(int)type].ReturnObjectToPool(go);
 }