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; } } }
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); }
/// <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); }
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); }
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; } } }
/// <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); }
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; } } }
/// <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; }
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; } }