public void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.tag == "bullet")
        {
            BulletOwner bulletOwner = collision.gameObject.GetComponent <BulletOwner>();

            if (bulletOwner.isBoss)
            {
                health -= bulletOwner.normalDamage + bulletOwner.criticalDamage;
            }
            else
            {
                health -= bulletOwner.normalDamage;
            }
        }



        if (collision.gameObject.tag == "bananakatana")
        {
            BulletOwner bulletOwner = collision.gameObject.GetComponent <BulletOwner>();

            if (bulletOwner.isBoss)
            {
                health -= bulletOwner.normalDamage + bulletOwner.criticalDamage;
            }
            else
            {
                health -= bulletOwner.normalDamage;
            }
        }
    }
示例#2
0
    public Bullet Create(BulletOwner owner, Vector2 position, Vector2 velocity, int damage = 1)
    {
        var bullet = _bulletPool.Spawn(owner, position, velocity, damage);

        _bullets.Add(bullet);

        return(bullet);
    }
示例#3
0
        /// <summary>
        /// Get a bullet from object pool
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public GameObject GetBullet(BulletOwner type)
        {
            GameObject bullet = m_LaserBullets.Spawn();

            bullet.transform.rotation      = Quaternion.identity;
            bullet.transform.localPosition = Vector3.zero;
            bullet.GetComponent <SpriteRenderer>().sprite = m_BulletSkin[(int)type];
            bullet.SetActive(false);
            return(bullet);
        }
示例#4
0
    public GameObject GetBossBullet(Vector3 position, Vector3 direction, BulletOwner bulletOwner)
    {
        bullet = Instantiate(Resources.Load <GameObject>("Prefabs/Bullet/BossBullet"), position, Quaternion.identity).GetComponent <Bullet>();
        bullet.transform.position = position;

        // 设置子弹所属方
        bullet.bulletOwner = bulletOwner;
        bullet.GetComponent <Bullet>().DirectionTowards = direction;
        return(bullet.gameObject);
    }
示例#5
0
 public void InitBullet(BulletType bt, BulletOwner bo, float speed)
 {
     bulletType  = bt;
     bulletOwner = bo;
     this.speed  = speed;
     exploded    = false;
     if (bt == BulletType.Piercing)
     {
         currentPiercingHits = MAX_PIERCING_HITS;
     }
 }
    public void OnCollisionEnter(Collision col)
    {
        if (col.gameObject.CompareTag("bullet"))
        {
            BulletOwner bulletOwner = col.gameObject.GetComponent <BulletOwner>();

            if (bulletOwner.isBoss)
            {
                Health -= bulletOwner.normalDamage + bulletOwner.criticalDamage;
            }
            else
            {
                Health -= bulletOwner.normalDamage;
            }

            enemyName = bulletOwner.owner;
        }
    }
    private void OnTriggerEnter(Collider coll)
    {
        if (coll.gameObject.CompareTag("explosivebarrel"))
        {
            BulletOwner bulletOwner = coll.gameObject.GetComponent <BulletOwner>();

            if (bulletOwner.isBoss)
            {
                Health -= bulletOwner.normalDamage + bulletOwner.criticalDamage;
            }
            else
            {
                Health -= bulletOwner.normalDamage;
            }
        }
        if (coll.gameObject.CompareTag("explosiondamage"))
        {
            BulletOwner bulletOwner = coll.gameObject.GetComponent <BulletOwner>();

            if (bulletOwner.isBoss)
            {
                Health -= bulletOwner.normalDamage + bulletOwner.criticalDamage;
            }
            else
            {
                Health -= bulletOwner.normalDamage;
            }
        }
        if (coll.gameObject.CompareTag("lava"))
        {
            BulletOwner bulletOwner = coll.gameObject.GetComponent <BulletOwner>();

            if (bulletOwner.isBoss)
            {
                Health -= bulletOwner.normalDamage + bulletOwner.criticalDamage;
            }
            else
            {
                Health -= bulletOwner.normalDamage;
            }

            enemyName = bulletOwner.owner;
        }
    }
    public void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.CompareTag("explosivebarrel"))
        {
            BulletOwner bulletOwner = other.gameObject.GetComponent <BulletOwner>();

            if (bulletOwner.isBoss)
            {
                health -= bulletOwner.normalDamage + bulletOwner.criticalDamage;
            }
            else
            {
                health -= bulletOwner.normalDamage;
            }
        }

        if (other.gameObject.name == "TankDamage(Clone)")
        {
            BulletOwner bulletOwner = other.gameObject.GetComponent <BulletOwner>();

            if (bulletOwner.isBoss)
            {
                health -= bulletOwner.normalDamage + bulletOwner.criticalDamage;
            }
            else
            {
                health -= bulletOwner.normalDamage;
            }
        }
        if (other.gameObject.tag == "explosiondamage")
        {
            BulletOwner bulletOwner = other.gameObject.GetComponent <BulletOwner>();

            if (bulletOwner.isBoss)
            {
                health -= bulletOwner.normalDamage + bulletOwner.criticalDamage;
            }
            else
            {
                health -= bulletOwner.normalDamage;
            }
        }
    }
示例#9
0
    /// <summary>
    /// 获取子弹
    /// </summary>
    /// <param name="shootingTransform">射击点</param>
    /// <param name="bulletOwner">子弹的所属方</param>
    /// <param name="weaponType">子弹的类型</param>
    /// <returns></returns>
    public GameObject GetBullet(Transform shootingTransform, BulletOwner bulletOwner, WeaponType weaponType = WeaponType.Normal)
    {
        bullet = null;

        //   Debug.Log("free的数量" + free.Count);
        for (int i = 0; i < free.Count; i++)
        {
            if (weaponType == free[i].bulletType)
            {
                bullet = free[i];
                free.Remove(free[i]);
                break;
            }
        }

        if (bullet == null)
        {
            if (weaponType == WeaponType.Normal)
            {
                bullet = Instantiate(Resources.Load <GameObject>("Prefabs/Bullet/NomalBullet"), shootingTransform.position, Quaternion.identity).GetComponent <Bullet>();
            }
            else if (weaponType == WeaponType.Fire)
            {
                bullet = Instantiate(Resources.Load <GameObject>("Prefabs/Bullet/FireBullet"), shootingTransform.position, Quaternion.identity).GetComponent <FireBullet>() as Bullet;
            }
            else if (weaponType == WeaponType.Frozen)
            {
                bullet = Instantiate(Resources.Load <GameObject>("Prefabs/Bullet/FrozenBullet"), shootingTransform.position, Quaternion.identity).GetComponent <FrozenBullet>() as Bullet;
            }
        }

        bullet.transform.position = shootingTransform.position;
        // 设置子弹所属方
        bullet.bulletOwner = bulletOwner;
        // 子弹向前发射
        bullet.GetComponent <Bullet>().DirectionTowards = shootingTransform.forward * 1000 - shootingTransform.position;
        // 添加到使用列表中
        used.Add(bullet.GetComponent <Bullet>());

        bullet.gameObject.SetActive(true);
        return(bullet.gameObject);
    }
示例#10
0
    public void OnTriggerStay(Collider col)
    {
        if (col.gameObject.CompareTag("afterburntdamage"))
        {
            test3 = true;
            BulletOwner bulletOwner = col.gameObject.GetComponent <BulletOwner>();

            if (bulletOwner.isBoss)
            {
                health -= bulletOwner.normalDamage + bulletOwner.criticalDamage;
            }
            else
            {
                health -= bulletOwner.normalDamage;
            }
        }

        if (col.gameObject.CompareTag("flamethrowerhitdamage"))
        {
            test3 = true;
            burneffect.Play();
            burneffect.gameObject.SetActive(true);
            burneffect.transform.position = gameObject.transform.position;
            burneffect.GetComponent <BoxCollider>().enabled = true;
            BulletOwner bulletOwner = col.gameObject.GetComponent <BulletOwner>();

            if (bulletOwner.isBoss)
            {
                health -= bulletOwner.normalDamage + bulletOwner.criticalDamage;
            }
            else
            {
                health -= bulletOwner.normalDamage;
            }
        }
    }
示例#11
0
 /// <summary>
 /// Set data before use (Init)
 /// </summary>
 /// <param name="speed"></param>
 /// <param name="damage"></param>
 /// <param name="owner"></param>
 public virtual void Program(int speed, int damage, BulletOwner owner)
 {
     Speed  = speed;
     Damage = damage;
     Owner  = owner;
 }
示例#12
0
    void Update()
    {
        if (test3 == false)
        {
            burneffect.gameObject.SetActive(false);
        }

        if (test3 == true)
        {
            burneffect.gameObject.SetActive(true);
        }
        if (burneffect.isPlaying == true)
        {
            burneffect.GetComponent <BoxCollider>().enabled = true;
            burneffect.gameObject.SetActive(true);
        }

        if (burneffect.isPlaying == false)
        {
            burneffect.GetComponent <BoxCollider>().enabled = false;
            test3 = false;
        }

        if (health == 0)
        {
            Destroy(gameObject);
            Instantiate(effect, transform.position, spawneffect.transform.rotation);
            Destroy(burneffect);
        }

        health      = Mathf.Clamp((float)health, 0, float.MaxValue);
        uiText.text = data.Name + "\n" + health;
        float dist = Vector3.Distance(player.transform.position, transform.position);

        if (dist >= MinUIRange && dist <= MaxUIRange)
        {
            uiText.faceColor = enemyUIColor;
        }
        else
        {
            uiText.faceColor = new Color(0, 0, 0, 0);
        }


        facetarget();
        if (Playerhealth.Health >= 0)
        {
        }
        if (data.Type != EnemyType.NoRange)
        {
            float distance = Vector3.Distance(transform.position, player.transform.position);

            if (distance <= data.Range)
            {
                timer += Time.deltaTime;
                if (Playerhealth.Health >= 0)
                {
                    if (timer >= data.ReloadTime)
                    {
                        Quaternion rot = Quaternion.LookRotation(player.transform.position);
                        bullet = (GameObject)Instantiate(data.ProjectilePrefab, transform.position + offset, rot);

                        BulletOwner bulletHandler = bullet.GetComponent <BulletOwner>();

                        bulletHandler.owner          = data.Name;
                        bulletHandler.normalDamage   = data.NormalDamage;
                        bulletHandler.isBoss         = data.isBoss;
                        bulletHandler.criticalDamage = data.CriticalDamage;

                        bullet.transform.LookAt(player.transform.position);

                        hasFire = true;
                        timer   = 0;
                    }
                }
            }
        }

        if (hasFire)
        {
            bullet.GetComponent <Rigidbody>().velocity = bullet.transform.forward * data.ProjectileSpeed * Time.deltaTime;
            hasFire = false;
        }
    }