public BarrageUserControl() { InitializeComponent(); barrageConfig = new BarrageConfig(canvas); Barrage.Width = System.Windows.SystemParameters.PrimaryScreenWidth; //设置弹幕高度 Barrage.Height = barrageConfig.height; }
public void LoadConfigs() { ItemConfig.LoadCsvCfg(); AnimConfig.LoadCsvCfg(); PlayerConfig.LoadCsvCfg(); MonsterConfig.LoadCsvCfg(); BossConfig.LoadCsvCfg(); BuffConfig.LoadCsvCfg(); SkillConfig.LoadCsvCfg(); LevelConfig.LoadCsvCfg(); BulletConfig.LoadCsvCfg(); BarrageConfig.LoadCsvCfg(); ColliderConfig.LoadCsvCfg(); }
/// <summary> /// 创建弹幕 /// </summary> void CreateBarrage(int index) { float damageRatio = _skill.DamageRatio.Count > index ? _skill.DamageRatio[index] : _skill.DamageRatio[0]; float damage = m_Owner.GetAttribute(E_Attribute.Atk.ToString()).GetTotalValue() * damageRatio / 100; int barrageId = _skill.BarrageId.Count > index ? _skill.BarrageId[index] : _skill.BarrageId[0]; var barrageCfg = BarrageConfig.GetData(barrageId); var bullet = ResourceManager.Load <GameObject>(PathManager.GetBulletPath("Bullet_" + _skill.BulletId)); Transform parent = null; if (barrageCfg.IsFollow) { parent = m_Owner.transform; } if (m_Owner == GameManager.Player) { ShootManager.Instance.Shoot(parent, m_Owner.gameObject, bullet, damage, barrageCfg, GameConfig.Instance.EnemyLayer); } else { ShootManager.Instance.Shoot(parent, m_Owner.gameObject, bullet, damage, barrageCfg, GameConfig.Instance.PlayerLayer); } }
public void Init(GameObject bullet, bool isFaceRight, Vector3 bulletDir, float bulletDamage, BarrageConfig barrageCfg, int targetLayer) { _bullet = bullet; _bulletDir = bulletDir; _isFaceRight = isFaceRight; _targetLayer = targetLayer; _bulletDamage = bulletDamage; _emitterCount = barrageCfg.Count; _shootType = barrageCfg.BarrageType; _createEmitterOffest = barrageCfg.Offest; _createEmitterIntervalTime = barrageCfg.BirthIntervalTime; _createEmitterIntervalDistance = barrageCfg.BirthIntervalDistance; _shootWave = barrageCfg.Wave; _shootIntervalTime = barrageCfg.ShootIntervalTime; }
public override void OnStay() { if (!_completed) { timeCount += GameManager.DeltaTime; if (timeCount > Delay) { Transform parent = null; BarrageConfig bCfg = BarrageConfig.GetData(BarrageId); var bullet = ResourceManager.Load <GameObject>(PathManager.GetBulletPath("Bullet_" + BulletId)); switch (TargetPosType) { case TargetPos.敌人位置: parent = TargetTrans; break; case TargetPos.固定位置: break; case TargetPos.敌人X轴位置: _pos.x = TargetTrans.position.x; _pos.y = Offest.y; break; } if (m_Owner == GameManager.Player) { _emitterManager = ShootManager.Instance.Shoot(parent, _pos, bullet, m_Owner.GetAttribute(E_Attribute.Atk.ToString()).GetTotalValue(), bCfg, GameConfig.Instance.EnemyLayer); } else { _emitterManager = ShootManager.Instance.Shoot(parent, _pos, bullet, m_Owner.GetAttribute(E_Attribute.Atk.ToString()).GetTotalValue(), bCfg, GameConfig.Instance.PlayerLayer); } if (TargetPosType == TargetPos.敌人X轴位置) { _emitterManager.OnUpdate += () => { _pos.x = TargetTrans.position.x; _pos.y = Offest.y; _emitterManager.transform.position = _pos; }; } _completed = true; } } //if (!_enter) //{ // _enter = true; //Transform parent = null; //BarrageConfig bCfg = BarrageConfig.GetData(BarrageId); //var bullet = ResourceManager.Load<GameObject>(PathManager.GetBulletPath("Bullet_" + BulletId)); //TimerManager.Instance.AddListener(Delay, () => //{ // switch (TargetPosType) // { // case TargetPos.敌人位置: // parent = TargetTrans; // break; // case TargetPos.固定位置: // break; // case TargetPos.敌人X轴位置: // _pos.x = TargetTrans.position.x; // _pos.y = Offest.y; // break; // } // if (m_Owner==GameManager.Player) // { // _emitterManager = ShootManager.Instance.Shoot(parent, _pos, bullet, m_Owner.GetAttribute(E_Attribute.Atk.ToString()).GetTotalValue(), bCfg, GameConfig.Instance.EnemyLayer); // } // else // { // _emitterManager = ShootManager.Instance.Shoot(parent, _pos, bullet, m_Owner.GetAttribute(E_Attribute.Atk.ToString()).GetTotalValue(), bCfg, GameConfig.Instance.PlayerLayer); // } // if (TargetPosType==TargetPos.敌人X轴位置) // { // _emitterManager.OnUpdate += () => // { // _pos.x = TargetTrans.position.x; // _pos.y = Offest.y; // _emitterManager.transform.position = _pos; // }; // } //}); // } }
public EmitterManager Shoot(Transform parent, GameObject owner, GameObject bullet, float bulletDamage, BarrageConfig barrageCfg, int targetLayer) { Vector3 dir = Vector3.zero; switch (barrageCfg.Direction) { case E_Direction.Up: dir = Vector3.up; break; case E_Direction.Down: dir = Vector3.down; break; case E_Direction.Left: if (owner.transform.localScale.x > 0) { dir = Vector3.left; } else { dir = Vector3.right; } break; case E_Direction.Right: if (owner.transform.localScale.x > 0) { dir = Vector3.right; } else { dir = Vector3.left; } break; } var emitter = CreateEmitterManager(PoolType.EmitterManager, parent, owner.transform.position); emitter.Init(bullet, owner.transform.localScale.x > 0, dir, bulletDamage, barrageCfg, targetLayer); emitter.Enable(); return(emitter); }