/*public void CreateMultiply(String bulletype,String shootername,Gun gun,Vector3 position,Vector3 muzzleOrientation,BulletType bt) * { * _bullet = (GameObject) Resources.Load("MultiplyBullet/"+bulletype, typeof(GameObject)); * Vector3 start = position + muzzleOrientation.normalized * _bullet.transform.localScale.magnitude*SystemOption.SceneScale; * start.z = SystemOption.ItemZPosition; * * GameObject newBullet = ObjectPool.current.GetObject(_bullet); * * * Bullet bullet = newBullet.GetComponent<Bullet>(); * bullet.SetSprite(bt); * bullet.Shootout(shootername,gun,start,muzzleOrientation); * * }*/ public void CreateTrack(String shootername, Gun gun, Vector3 position, Vector3 muzzleOrientation, float rotateper, BulletType bt) { Debug.Log("PlayerTrackShoot"); Vector3 start = position + muzzleOrientation.normalized * (SystemOption.StartBulletOffsetScale + gun.BulletSize + UpgradeTree.PlayerArchive.ExtraBulletSpecialLevel * SystemOption.ExBulletScalePerL); start.z = SystemOption.ItemZPosition; GameObject newBullet = NewObjectPool.Current.Generate("TrackBall"); newBullet.transform.right = muzzleOrientation; newBullet.GetComponent <SpriteRenderer>().color = BuffColor(gun.Gunbuff); TrackBullet bullet = newBullet.GetComponent <TrackBullet>(); bullet.Shootout(shootername, gun, start, rotateper); newBullet.GetComponent <Transform>().localScale = new Vector3(gun.BulletSize + UpgradeTree.PlayerArchive.ExtraBulletSpecialLevel * SystemOption.ExBulletScalePerL * SystemOption.SceneScale, gun.BulletSize + UpgradeTree.PlayerArchive.ExtraBulletSpecialLevel * SystemOption.ExBulletScalePerL * SystemOption.SceneScale, gun.BulletSize + UpgradeTree.PlayerArchive.ExtraBulletSpecialLevel * SystemOption.ExBulletScalePerL * SystemOption.SceneScale); //Debug.DrawLine(position,start,Color.red,2); }
public BulletBase ShootBullet(int templateID, UnitBase shooter, UnitBase target, bool isAttack) { var config = ConfigManager.Bullet.getRow(templateID); BulletBase bullet = null; switch (config.BulletType) { case BulletType.kCoordBullet: bullet = new CoordBullet(shooter, target.position); break; case BulletType.kLineBullet: if (config.FixRange > 0) { var offset = (target.position - shooter.position).normalized * config.FixRange; bullet = new LineBullet(shooter, shooter.position + offset); } else { bullet = new LineBullet(shooter, target.position); } break; case BulletType.kPenteralBullet: if (config.FixRange > 0) { var offset = (target.position - shooter.position).normalized * config.FixRange; bullet = new PenetraBullet(shooter, config.DecayScale, shooter.position + offset); } else { bullet = new PenetraBullet(shooter, config.DecayScale, target.position); } break; case BulletType.kReturnBullet: if (config.FixRange > 0) { var offset = (target.position - shooter.position).normalized * config.FixRange; bullet = new ReturnBullet(shooter, config.DecayScale, shooter.position + offset); } else { bullet = new ReturnBullet(shooter, config.DecayScale, target.position); } break; case BulletType.kTrackBullet: bullet = new TrackBullet(shooter, target); break; default: throw new NotImplementedException("not implemented type " + config.BulletType.ToString()); } bullet.radius = config.Radius; bullet.speed = config.Speed; bullet.acceleration = config.Acceleration; if (isAttack) { bullet.InitDamage((int)shooter.ATK.value, config.DamageType, isAttack); } else if (config.Damage > 0) { bullet.InitDamage(config.Damage, config.DamageType, isAttack); } if (config.AoeRadius > 0) { List <SkillModule.BuffEmitter> emitters = new List <SkillModule.BuffEmitter>(config.BuffEmitter.Length); for (int i = 0; i < config.BuffEmitter.Length; ++i) { var emitter = new SkillModule.BuffEmitter(); var emitter_config = ConfigManager.BuffEmitter.getRow(config.BuffEmitter[i]); emitter.buffs = new int[emitter_config.Buffs.Length]; for (int n = 0; n < emitter_config.Buffs.Length; ++n) { emitter.buffs[n] = emitter_config.Buffs[n]; } emitter.Caster = shooter; emitter.filter = emitter_config.AoeFilter; emitters[i] = emitter; } bullet.InitAoeFile(config.AoeRadius, config.AoeDuration, config.AoeInterval, emitters); } if (config.Buffs != null && config.Buffs.Length > 0) { int[] buffs = new int[config.Buffs.Length]; for (int n = 0; n < config.Buffs.Length; ++n) { buffs[n] = config.Buffs[n]; } bullet.InitBuff(buffs); } bullet.position = shooter.position; AddBullet(bullet); return(bullet); }