void ZZShotgun() { IBullet[] bullets = new IBullet[40]; Vector3 vec = new Vector3(0, 0, 1); for (int i = 0; i < 18; i++) { GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName()); bullet.transform.position = shooter.GetPos(); bullet.transform.forward = Quaternion.AngleAxis(20 * i, Vector3.up) * vec; IBullet bulletInfo = bullet.GetComponent <IBullet>(); bulletInfo.shooter = shooter; bulletInfo.Fire(); bullets[i] = bulletInfo; bulletInfo.speed = 5.0f; } if (count % 2 == 0) { for (int j = 0; j < 18; j++) { GameObject bullet = BulletUtil.LoadBullet("米粒"); bullet.transform.position = shooter.GetPos(); bullet.transform.forward = Quaternion.AngleAxis(20 * j, Vector3.up) * vec1; IBullet bulletInfo = bullet.GetComponent <IBullet>(); bulletInfo.shooter = shooter; bulletInfo.speed = 5; bulletInfo.Fire(); } vec1 = Quaternion.AngleAxis(10, Vector3.up) * vec1; } }
IEnumerator ZZShotgun() { Vector3[] bulletsPos = new Vector3[20]; float distance = 0.4f; Vector3 vec = new Vector3(0, 0, 1); for (int a = 0; a < 1; a++) { for (int i = 0; i < 20; i++) { bulletsPos[i] = shooter.GetPos() + Quaternion.AngleAxis(18 * i, Vector3.up) * vec * distance; distance += 0.2f; } for (int i = 0; i < 20; i++) { for (int j = -8; j < 29; j++) { GameObject bullet2 = BulletUtil.LoadBullet(shooter.GetBulletName()); bullet2.transform.position = bulletsPos[i]; bullet2.transform.forward = Quaternion.AngleAxis(10 * j, Vector3.up) * vec; IBullet bulletInfo2 = bullet2.GetComponent <IBullet>(); bulletInfo2.shooter = shooter; bulletInfo2.Fire(); bulletInfo2.speed = 3.0f; } yield return(new WaitForSeconds(0.1f)); } } }
IEnumerator ZZShotgun() { Vector3 vec = GetVec(); for (int i = -9; i < 36; i++) { GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName()); bullet.transform.position = shooter.GetPos(); bullet.transform.forward = Quaternion.AngleAxis(20 * i, Vector3.up) * vec; IBullet bulletInfo = bullet.GetComponent <IBullet>(); bulletInfo.shooter = shooter; bulletInfo.speed = 5; bulletInfo.delay = 0; bulletInfo.Fire(); GameObject bullet2 = BulletUtil.LoadBullet(shooter.GetBulletName()); bullet2.transform.position = shooter.GetPos(); bullet2.transform.forward = Quaternion.AngleAxis(20 * i, Vector3.down) * vec; IBullet bulletInfo2 = bullet2.GetComponent <IBullet>(); bulletInfo2.shooter = shooter; bulletInfo2.speed = 5; bulletInfo2.delay = 0; bulletInfo2.Fire(); yield return(new WaitForSeconds(0.1f)); } }
IEnumerator ZZShotgun() { for (int i = 0; i < 4; i++) { Vector3 vec = new Vector3(0, 0, 1); Vector3 flowerVec = new Vector3(0, 0, 1); flowerVec = Quaternion.AngleAxis(Random.Range(0, 36) * 10, Vector3.up) * vec; for (int j = 0; j < 7; j++) { GameObject bullet; bullet = BulletUtil.LoadBullet(shooter.GetBulletName()); bullet.transform.position = shooter.GetPos(); bullet.transform.forward = Quaternion.AngleAxis(10 * j, Vector3.up) * flowerVec; IBullet bulletInfo = bullet.GetComponent <IBullet>(); bulletInfo.shooter = shooter; bulletInfo.speed = 1.5f; bulletInfo.Fire(); } yield return(new WaitForSeconds(2.0f)); } }
IEnumerator ZZShotgun() { for (int i = 0; i >= 0; i++) { Vector3 vec = new Vector3(0, 0, 1); int tj = Random.Range(-8, 20); for (int j = -8; j < 28; j++) { GameObject bullet; if (i % 2 == 1) { bullet = BulletUtil.LoadBullet("红边圆"); } else { bullet = BulletUtil.LoadBullet("蓝边圆"); } bullet.transform.position = shooter.GetPos(); bullet.transform.forward = Quaternion.AngleAxis(10 * j, Vector3.up) * vec; IBullet bulletInfo = bullet.GetComponent <IBullet>(); bulletInfo.shooter = shooter; bulletInfo.speed = 1.0f; bulletInfo.Fire(); } Vector3 flowerVec = new Vector3(0, 0, 1); flowerVec = Quaternion.AngleAxis(Random.Range(0, 36) * 10, Vector3.up) * vec; for (int j = 0; j < 7; j++) { GameObject bullet; if (i % 2 == 1) { bullet = BulletUtil.LoadBullet("红花"); } else { bullet = BulletUtil.LoadBullet("蓝花"); } bullet.transform.position = shooter.GetPos() + new Vector3(0, 0.3f, 0);; bullet.transform.forward = Quaternion.AngleAxis(10 * j, Vector3.up) * flowerVec; IBullet bulletInfo = bullet.GetComponent <IBullet>(); bulletInfo.shooter = shooter; bulletInfo.speed = 1.0f; bulletInfo.Fire(); } yield return(new WaitForSeconds(3.5f)); } }
public void Die() { EventManager.TriggerEvent("playerDied", null); GameObject explosion = BulletUtil.LoadBullet("ExplosionParticle"); explosion.transform.position = transform.position; explosion.GetComponent <IBullet>().Fire(); BarrageGame.Instance.GameOver(); }
protected override void Execute(List <GameEntity> entities) { foreach (var gameEntity in entities) { var fireCmd = gameEntity.fireCmdComp; gameEntity.RemoveFireCmdComp(); if (fireCmd.Count == 0) { continue; } var playerView = (PlayerView)gameEntity.viewComp.View; var playerDamage = gameEntity.GetStat(StatFlag.Damage); if (fireCmd.Count == 1) { BulletUtil.CreateBulletEntity( _contexts, gameEntity, playerView.Shoot.position, fireCmd.Angle, playerDamage, gameEntity.GetStat(StatFlag.FollowStartTime), gameEntity.GetStat(StatFlag.FollowRotMaxAngle)); } else { var shootPos = playerView.Shoot.position; var playerPos = playerView.transform.position; var count = fireCmd.Count; var rightDir = Vector3 .Cross(fireCmd.Angle.Angle2Vector2D(), Vector3.forward) .normalized; var spacing = gameEntity.GetStat(StatFlag.BulletSpace); var startPos = shootPos + rightDir * (count - 1) * spacing / 2f; for (var i = 0; i < count; i++) { var spawnPos = startPos - rightDir * (i * spacing); BulletUtil.CreateBulletEntity( _contexts, gameEntity, spawnPos, (spawnPos - playerPos).Vector2Angle2D(), playerDamage, gameEntity.GetStat(StatFlag.FollowStartTime), gameEntity.GetStat(StatFlag.FollowRotMaxAngle)); } } } }
public void Init(BulletType type, EnemyData data) { IEnemyBulletModel model = BulletUtil.GetEnemyBulletModel(type); if (model == null) { return; } model.Init(data); Init(model); }
public override void Fire() { GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName()); bullet.transform.position = shooter.GetPos(); bullet.transform.rotation = Quaternion.Euler(0, Random.Range(0, 360), 0); bullet.GetComponent <IBullet>().shooter = shooter; if (target) { bullet.GetComponent <IBullet>().target = target; } bullet.GetComponent <IBullet>().Fire(); }
public virtual void Fire(Vector3 vec) { //从对象池里取出子弹 GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName()); //将取出的子弹的位置设置为射击者的位置 bullet.transform.position = shooter.GetPos(); //使子弹的forward向量等于射击者到目标的向量,也就是说让子弹正面朝向目标 bullet.transform.forward = vec; //将子弹的攻击者设置为射击者 bullet.GetComponent <IBullet>().shooter = shooter; //调用子弹的发射函数。可在子弹的发射函数中设置发射延迟或者启动一个新的函数或协程。 bullet.GetComponent <IBullet>().Fire(); }
void GhRing() { for (int j = 0; j < 18; j++) { GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName()); bullet.transform.position = shooter.GetPos(); bullet.transform.forward = Quaternion.AngleAxis(20 * j, Vector3.up) * vec; IBullet bulletInfo = bullet.GetComponent <IBullet>(); bulletInfo.shooter = shooter; bulletInfo.speed = 5; bulletInfo.Fire(); } vec = Quaternion.AngleAxis(10, Vector3.up) * vec; }
//返回BulletUtil的mono类,当项目中存在时直接调用,不存在则新建空物体并挂载脚本,更新barrageUtil为新的BarrageUtil public BulletUtil getBulletUtil() { if (bulletUtil != null) { return(bulletUtil); } BulletUtil newBulletUtil = GameObject.FindObjectOfType <BulletUtil>(); if (newBulletUtil == null) { GameObject empty = new GameObject(); newBulletUtil = empty.AddComponent <BulletUtil>(); } bulletUtil = newBulletUtil; return(newBulletUtil); }
IEnumerator YkBall() { for (int i = 0; i < 3; i++) { Vector3 vec = new Vector3(0, 0, 1); for (int j = -8; j < 10; j++) { GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName()); bullet.transform.position = shooter.GetPos(); bullet.transform.forward = Quaternion.AngleAxis(20 * j, Vector3.up) * vec; bullet.GetComponent <IBullet>().shooter = shooter; bullet.GetComponent <IBullet>().Fire(); } yield return(new WaitForSeconds(0.1f)); } }
void OnTriggerEnter(Collider collider) { if ((bulletHitMask.value & 1 << collider.gameObject.layer) != 0) { BulletUtil.deactivateBullet(gameObject); switch (bulletType) { case ShooterTypeEnum.FRIENDLY: FriendlyBulletObjectPool.instance.returnPooledObject(gameObject); break; case ShooterTypeEnum.HOSTILE: EnemyBulletObjectPool.instance.returnPooledObject(gameObject); break; } GameObject impactEffectParticleSystem; switch (collider.gameObject.layer) { case 6: //Player. LivesManager.instance.decrementLivesWithInvul(); break; case 9: // Boundary. break; case 10: // Indestructible. impactEffectParticleSystem = (GameObject)Instantiate(impactEffect, transform.position, transform.rotation); Destroy(impactEffectParticleSystem, 1.0f); break; default: impactEffectParticleSystem = (GameObject)Instantiate(impactEffect, transform.position, transform.rotation); Destroy(impactEffectParticleSystem, 1.0f); BaseHealth collidedHealthComponent = collider.gameObject.GetComponent <BaseHealth>(); BulletDamage damageComponent = gameObject.GetComponent <BulletDamage>(); if (collidedHealthComponent != null && damageComponent != null) { collidedHealthComponent.takeDamage(damageComponent.damage); } break; } } }
IEnumerator ZZShotgun() { Vector3 vec = new Vector3(0, 0, 1); for (int j = -8; j < 1; j++) { GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName()); bullet.transform.position = shooter.GetPos(); bullet.transform.forward = Quaternion.AngleAxis(45 * j, Vector3.up) * vec; IBullet bulletInfo = bullet.GetComponent <IBullet>(); bulletInfo.shooter = shooter; bulletInfo.Fire(); } yield return(new WaitForSeconds(0.5f)); }
public void DropPoint() { //随机掉落点数 int count = UnityEngine.Random.Range(-2, 5); if (count <= 0) { return; } GameObject bullet = BulletUtil.LoadBullet(UnityEngine.Random.Range(0, 2) == 0?"ppt":"hpt"); IBullet bulletInfo = bullet.GetComponent <IBullet>(); bulletInfo.shooter = this; bullet.transform.position = transform.position; bulletInfo.Fire(); }
//射击方法,需要重写 public override void Fire() { Vector3 vec = GetVec(); for (int i = -1 * count; i < count; i++) { GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName()); bullet.transform.position = shooter.GetPos(); bullet.transform.forward = Quaternion.AngleAxis(20 * i, Vector3.up) * vec; IBullet bulletInfo = bullet.GetComponent <IBullet>(); bulletInfo.shooter = shooter; bulletInfo.speed = 10; bulletInfo.delay = 3; bulletInfo.Fire(); } }
public void Die() { GameObject explosion = BulletUtil.LoadBullet("ExplosionParticle"); explosion.transform.position = transform.position; explosion.GetComponent <IBullet>().Fire(); DropPoint(); weapon = null; waitTimer = null; enemys.Remove(this); if (tag == "Boss") { GUIManager.ShowView("GameWinUI", Vector3.zero); Time.timeScale = 0.1f; } Destroy(gameObject); }
//射击方法,需要重写 public override void Fire() { Vector3 vec = new Vector3(0, 0, 1); for (int i = -1; i < 2; i++) { GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName()); bullet.transform.position = shooter.GetPos() + new Vector3(i * 0.5f, 0, 0); // bullet.transform.forward = Quaternion.AngleAxis(30 * i, Vector3.up) * vec; IBullet bulletInfo = bullet.GetComponent <IBullet>(); bulletInfo.shooter = shooter; bulletInfo.Fire(); } }
IEnumerator ZZShotgun() { IBullet[] bullets = new IBullet[20]; Vector3 vec = new Vector3(0, 0, 1); for (int a = 0; a < 1; a++) { for (int i = 0; i < 12; i++) { GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName()); bullet.transform.position = shooter.GetPos(); bullet.transform.forward = Quaternion.AngleAxis(30 * i, Vector3.up) * vec; IBullet bulletInfo = bullet.GetComponent <IBullet>(); bulletInfo.shooter = shooter; bulletInfo.Fire(); bullets[i] = bulletInfo; bulletInfo.speed = 3.0f; yield return(new WaitForSeconds(0.1f)); } yield return(new WaitForSeconds(1.0f)); for (int i = 0; i < 12; i++) { bullets[i].Recycle(); for (int j = -8; j < 29; j++) { GameObject bullet2 = BulletUtil.LoadBullet(shooter.GetBulletName()); bullet2.transform.position = bullets[i].transform.position; bullet2.transform.forward = Quaternion.AngleAxis(10 * j, Vector3.up) * vec; IBullet bulletInfo2 = bullet2.GetComponent <IBullet>(); bulletInfo2.shooter = shooter; bulletInfo2.Fire(); bulletInfo2.speed = 3.0f; } } } }
IEnumerator ZZShotgun() { Vector3 vec = new Vector3(0, 0, -1); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName()); bullet.transform.position = shooter.GetPos(); bullet.transform.forward = vec; IBullet bulletInfo = bullet.GetComponent <IBullet>(); bulletInfo.shooter = shooter; bulletInfo.Fire(); yield return(new WaitForSeconds(0.3f)); } yield return(new WaitForSeconds(1f)); } }
void shoot() { for (int i = 0; i < targetArray.Length; i++) { GameObject bullet = shooterType == ShooterTypeEnum.FRIENDLY ? FriendlyBulletObjectPool.instance.getPooledObject() : EnemyBulletObjectPool.instance.getPooledObject(); Vector3 launchOrigin = new Vector3(transform.position.x, bullet.transform.position.y, transform.position.z) + targetArray[i].normalized * GameConstants.gridSize / 2; if (bullet != null) { bullet.transform.position = launchOrigin; bullet.transform.rotation = transform.rotation; } else { bullet = (GameObject)Instantiate(bulletPrefab.gameObject, launchOrigin, transform.rotation); } BulletUtil.activateBullet(bullet); BulletMovement bulletMovementComponent = bullet.GetComponent <BulletMovement>(); if (bulletMovementComponent != null) { bulletMovementComponent.setTarget(targetArray[i]); bulletMovementComponent.setVelocity(velocity); bulletMovementComponent.setType(shooterType); } BulletDamage bulletDamageComponent = bullet.GetComponent <BulletDamage>(); if (bulletDamageComponent != null) { bulletDamageComponent.setDamage(damage); } } }
//射击方法,需要重写 public virtual void Fire() { Vector3 vec; if (target == null) { vec = shooter.GetObj().transform.forward; } else { vec = GetVec(); } GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName()); bullet.transform.position = shooter.GetPos(); bullet.transform.forward = vec; bullet.GetComponent <IBullet>().shooter = shooter; if (target) { bullet.GetComponent <IBullet>().target = target; } bullet.GetComponent <IBullet>().Fire(); }
public HashSet <string> GetTargetTags() { return(BulletUtil.GetBulletModel(BulletType.Player).GetTargetTags()); }
public void Init(BulletType type) { IBulletModel model = BulletUtil.GetBulletModel(type); Init(model); }
public int GetAttack() { return(BulletUtil.GetBulletModel(BulletType.Player).GetAttack()); }
public void GetBulletSpeed(Action <float> callBack) { BulletUtil.GetBulletModel(BulletType.Player).GetBulletSpeed(callBack); }
IEnumerator ZZShotgun() { Vector3 vec = new Vector3(0, 0, -1); Quaternion leftrota = Quaternion.AngleAxis(-10, Vector3.up); Quaternion rightrota = Quaternion.AngleAxis(10, Vector3.up); for (int i = 0; i < 3; i++) { for (int j = 9; j < 14; j++) { switch (j) { case 9: GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName()); bullet.transform.position = shooter.GetPos(); bullet.transform.forward = vec; IBullet bulletInfo = bullet.GetComponent <IBullet>(); bulletInfo.shooter = shooter; bulletInfo.Fire(); break; case 10: GameObject bullet2 = BulletUtil.LoadBullet(shooter.GetBulletName()); bullet2.transform.position = shooter.GetPos(); bullet2.transform.forward = leftrota * vec; IBullet bulletInfo2 = bullet2.GetComponent <IBullet>(); bulletInfo2.shooter = shooter; bulletInfo2.Fire(); break; case 11: GameObject bullet3 = BulletUtil.LoadBullet(shooter.GetBulletName()); bullet3.transform.position = shooter.GetPos(); bullet3.transform.forward = rightrota * vec; IBullet bulletInfo3 = bullet3.GetComponent <IBullet>(); bulletInfo3.shooter = shooter; bulletInfo3.Fire(); break; case 12: GameObject bullet4 = BulletUtil.LoadBullet(shooter.GetBulletName()); bullet4.transform.position = shooter.GetPos(); bullet4.transform.forward = rightrota * rightrota * vec; IBullet bulletInfo4 = bullet4.GetComponent <IBullet>(); bulletInfo4.shooter = shooter; bulletInfo4.Fire(); break; case 13: GameObject bullet5 = BulletUtil.LoadBullet(shooter.GetBulletName()); bullet5.transform.position = shooter.GetPos(); bullet5.transform.forward = leftrota * leftrota * vec; IBullet bulletInfo5 = bullet5.GetComponent <IBullet>(); bulletInfo5.shooter = shooter; bulletInfo5.Fire(); break; } } yield return(new WaitForSeconds(0.5f)); } }