public virtual void Init(SideType side) { this.side = side; config = this is MainBullet ? LogicConfig.MainBullet : LogicConfig.NormalBullet; }
public override void Initialize(BulletConfig bulletConfig) { base.Initialize(bulletConfig); InitializeModel(bulletConfig); InitializeRigidbody(); InitializeDamageDealer(); }
public Entity CreateBulletEntity(int cmdSeq, EntityKey entityKey, int serverTime, Vector3 dir, int weaponId, EBulletCaliber caliber, BulletConfig bulletConfig, Vector3 viewPosition, Vector3 emitPosition) { int bulletEntityId = _entityIdGenerator.GetNextEntityId(); Vector3 velocity = dir * bulletConfig.EmitVelocity; var bulletEntity = _bulletContext.CreateEntity(); float maxDistance = bulletConfig.MaxDistance; bulletEntity.AddEntityKey(new EntityKey(bulletEntityId, (int)EEntityType.Bullet)); bulletEntity.AddBulletData(velocity, 0, bulletConfig.Gravity, 0, serverTime, maxDistance, bulletConfig.PenetrableLayerCount, bulletConfig.BaseDamage, bulletConfig.PenetrableThickness, bulletConfig, bulletConfig.VelocityDecay, caliber, weaponId, bulletConfig.DistanceDecayFactor); bulletEntity.AddPosition(); bulletEntity.position.Value = viewPosition; bulletEntity.AddOwnerId(entityKey); bulletEntity.bulletData.CmdSeq = cmdSeq; bulletEntity.bulletData.StartPoint = viewPosition; bulletEntity.bulletData.EmitPoint = emitPosition; bulletEntity.bulletData.StartDir = dir; bulletEntity.isNew = true; bulletEntity.AddEmitPosition(emitPosition); bulletEntity.isFlagSyncNonSelf = true; bulletEntity.AddLifeTime(DateTime.Now, SharedConfig.BulletLifeTime); // in case user logout return(bulletEntity); }
/// <summary> /// Perform any queued NoteActions that have triggered /// </summary> private void Update() { if (GameController.Instance.IsResetting()) { return; } timeElapsed += Time.deltaTime; int actionsCompleted = 0; for (int i = 0; i < queuedBullets.Count; i++) { BulletConfig bulletConfig = queuedBullets[i]; if (bulletConfig.EmissionTime <= timeElapsed) { Shoot(bulletConfig); actionsCompleted++; } else { // Since we assume that the queuedShots list is ordered by FireTime, we know that none of the remaining shots should be fired yet break; } } queuedBullets.RemoveRange(0, actionsCompleted); }
private void InitializeData(BulletConfig bulletConfig) { Damage = bulletConfig.damage; Range = bulletConfig.range; Speed = bulletConfig.speed; DamageDealFrequency = bulletConfig.damageDealFrequency; Penetrable = bulletConfig.penetrable; }
public IBulletFire CreateBulletFireLogic(BulletConfig config) { if (null != config) { return(new DefaultBulletFireLogic()); } return(null); }
public IBulletFireListener CreateBulletFireListener(BulletConfig config) { if (null != config) { return(new BulletFireEventListener()); } return(null); }
public override void dispose() { base.dispose(); _data = null; _unit = null; _config = null; _levelConfig = null; }
public void SpawnBullet(BulletConfig bulletConfig, Vector3 position, Quaternion rotation) { BulletView bulletView = Instantiate(bulletConfig.viewPrefab, position, rotation).GetComponent <BulletView>(); bulletView.Init(bulletConfig); bulletView.OnCollide += BulletViewOnOnCollide; bulletView.OnCollideExit += BulletViewOnOnCollideExit; bullets.Add(bulletView); }
public override void init() { base.init(); _data = _bullet.getData(); _unit = _bullet.getUnit(); _config = BulletConfig.get(_data.id); _levelConfig = BulletLevelConfig.get(_data.id, _data.level); }
private void InitializeModel(BulletConfig bulletConfig) { var sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere); sphere.transform.SetParent(transform); sphere.transform.position = Vector3.zero; sphere.transform.localScale = Vector3.one * bulletConfig.scale; sphere.GetComponent <Renderer>().material = bulletConfig.material; }
public void SetWeapon(GameObject cur, string name, float fireRate, GameObject TypeOfBullet) { //changingWeapon = true; equippedWeapon = cur; //this.gun = gun; timerReset = fireRate; this.fireRate = timerReset; weaponBullet = TypeOfBullet; clsBulletConfig = weaponBullet.GetComponent <BulletConfig>(); }
public void Initialize(BulletConfig config, OpponentController opponent, int damage) { opponent.OnDead += OnEnemyDead; this.transform.position = new Vector3(transform.position.x, transform.position.y + 1f, transform.position.z); this.opponent = opponent; this.enemyName = opponent.name; this.damage = damage; speed = config.speed; isAlive = true; }
/// <summary> /// On Awake I check for the fire rate to be not be negative since that would break the wait in the coroutine. /// I set the values for the BulletConfig based on weapon settings. This implies that it cannot be modified in runtime so far (Not modified anywhere else, only used). /// </summary> private void Awake() { if (_fireRate <= 0) { Debug.LogException(new Exception("Fire rate is <= 0, it will be set to 0.1"), this.gameObject); _fireRate = 0.1f; } //Bullet Setup _bullet = new BulletConfig(_spawnPoint.forward, _weaponDamage, _bulletSpeed, CalculateBulletSize(_weaponDamage)); }
protected override void ExecuteUserCmd(PlayerEntity playerEntity, IUserCmd cmd) { var controller = playerEntity.WeaponController(); var attackProxy = playerEntity.WeaponController().AttackProxy; var dataList = controller.BulletList; BulletConfig bulletConfig = attackProxy.WeaponConfigAssy.S_BulletCfg; if (bulletConfig == null) { return; } int weaponConfigId = attackProxy.WeaponConfigAssy.S_Id; var caliber = (EBulletCaliber)attackProxy.WeaponConfigAssy.NewWeaponCfg.Caliber; var damageBuff = attackProxy.GetAttachedAttributeByType(WeaponAttributeType.BaseDamage); var speedBuff = attackProxy.GetAttachedAttributeByType(WeaponAttributeType.EmitVelocity); var decayBuff = attackProxy.GetAttachedAttributeByType(WeaponAttributeType.DistanceDecay); BulletEntity bulletEntity; foreach (var bulletData in dataList) { bulletEntity = BulletEntityFactory.CreateBulletEntity(bulletData, playerEntity.entityKey.Value); float distanceDecay = bulletConfig.DistanceDecayFactor * (1 + decayBuff / 100); float velocityDecay = bulletConfig.VelocityDecay * (1 + decayBuff / 100); float maxDistance = bulletConfig.MaxDistance * (1 + decayBuff / 100); var entityBulletData = bulletEntity.bulletData; entityBulletData.Velocity = bulletConfig.EmitVelocity * (1 + speedBuff / 100) * bulletData.Dir; entityBulletData.DistanceDecay = Math.Min(0.99f, distanceDecay.FloatPrecision(2)); entityBulletData.WeaponId = weaponConfigId; entityBulletData.Caliber = caliber; entityBulletData.ServerTime = cmd.RenderTime; entityBulletData.Gravity = bulletConfig.Gravity; entityBulletData.VelocityDecay = velocityDecay.FloatPrecision(2); entityBulletData.DefaultBulletConfig = bulletConfig; entityBulletData.IsAimShoot = attackProxy.IsAiming; entityBulletData.PenetrableThickness = bulletConfig.PenetrableThickness; entityBulletData.BaseDamage = bulletConfig.BaseDamage + damageBuff; entityBulletData.PenetrableLayerCount = bulletConfig.PenetrableLayerCount; entityBulletData.MaxDistance = maxDistance.FloatPrecision(2); entityBulletData.CmdSeq = cmd.Seq; entityBulletData.StatisticsInfo.cmdSeq = cmd.Seq; // entityBulletData.StatisticsInfo.originStr = bulletData.ToStringExt(sb); // entityBulletData.StatisticsInfo.bulletBaseStr = entityBulletData.ToBaseString(sb); // entityBulletData.StatisticsInfo.bulletRunStartStr = entityBulletData.ToDynamicString(sb); //DebugUtil.AppendShootText(cmd.Seq, "[Bullet Gen]BulletEnity :{0}", entityBulletData); } dataList.Clear(); }
public override void Initialize(BulletConfig bulletConfig) { base.Initialize(bulletConfig); LineRenderer lineRenderer = gameObject.AddComponent <LineRenderer>(); lineRenderer.material = bulletConfig.material; lineRenderer.widthMultiplier = bulletConfig.scale; lineRenderer.shadowCastingMode = ShadowCastingMode.Off; lineRenderer.receiveShadows = false; }
public void SetWeapon(GameObject cur, string name, float fireRate, GameObject TypeOfBullet, Sprite weaponSprite) { //changingWeapon = true; equippedWeapon = cur; //this.gun = gun; timerReset = fireRate; timer = timerReset; weaponBullet = TypeOfBullet; clsBulletConfig = weaponBullet.GetComponent <BulletConfig>(); clsPlayerSpriteManager.UpdateWeaponSprite(weaponSprite); }
public static void Decode() { BulletConfig.DecodeTable(Resources.Load("config/Bullet") + ""); GunConfig.DecodeTable(Resources.Load("config/Gun") + ""); ItemConfig.DecodeTable(Resources.Load("config/Item") + ""); PlayerConfig.DecodeTable(Resources.Load("config/Player") + ""); BulletConfig.DecodeTableItem(); GunConfig.DecodeTableItem(); ItemConfig.DecodeTableItem(); PlayerConfig.DecodeTableItem(); }
protected override void ExecuteUserCmd(PlayerEntity playerEntity, IUserCmd cmd) { var controller = playerEntity.WeaponController(); var dataList = controller.BulletList; if (dataList != null && dataList.Count > 0) { BulletConfig bulletConfig = controller.HeldWeaponAgent.BulletCfg; if (null == bulletConfig) { return; } int weaponConfigId = controller.HeldWeaponAgent.ConfigId; var caliber = (EBulletCaliber)UserWeaponConfigManagement.FindConfigById(weaponConfigId).NewWeaponCfg.Caliber; foreach (var bulletData in dataList) { int bulletEntityId = _entityIdGenerator.GetNextEntityId(); Vector3 velocity = bulletData.Dir * bulletConfig.EmitVelocity; var bulletEntity = _bulletContext.CreateEntity(); float maxDistance = bulletConfig.MaxDistance; bulletEntity.AddEntityKey(new EntityKey(bulletEntityId, (int)EEntityType.Bullet)); bulletEntity.AddBulletData( velocity, 0, bulletConfig.Gravity, 0, cmd.RenderTime, maxDistance, bulletConfig.PenetrableLayerCount, bulletConfig.BaseDamage, bulletConfig.PenetrableThickness, bulletConfig, bulletConfig.VelocityDecay, caliber, weaponConfigId); bulletEntity.AddPosition(bulletData.ViewPosition); bulletEntity.AddOwnerId(playerEntity.entityKey.Value); bulletEntity.bulletData.CmdSeq = cmd.Seq; bulletEntity.bulletData.StartPoint = bulletData.ViewPosition; bulletEntity.bulletData.EmitPoint = bulletData.EmitPosition; bulletEntity.bulletData.StartDir = bulletData.Dir; bulletEntity.isNew = true; bulletEntity.AddEmitPosition(bulletData.EmitPosition); bulletEntity.isFlagSyncNonSelf = true; bulletEntity.AddLifeTime(DateTime.Now, SharedConfig.BulletLifeTime); // in case user logout bulletData.ReleaseReference(); } dataList.Clear(); } }
public static Sequence SpawnBullet(BulletConfig Bullet, Transform start, Transform target) { if (Bullet.projectile == null) { return(DOTween.Sequence()); } // MDebug.Log("spawn bullet"); float distance = (start.position - target.position).magnitude; float time = distance / Bullet.speed; Vector3 offset_target = Random.insideUnitSphere * Bullet.randomOffset; Transform new_target = new GameObject().transform; M_Math.CopyTransform(target, new_target); new_target.SetParent(target); if (offset_target.magnitude > 0) { new_target.localPosition += offset_target; } GameObject bullet = GameObject.Instantiate(Bullet.projectile, start.position, start.rotation) as GameObject; //just to be safe we run an own sequence that is just based on time (and will be hooked to game logic) // Sequence delayed_call_back = DOTween.Sequence(); // delayed_call_back.AppendInterval(time); Sequence emit = DOTween.Sequence(); emit.Append(bullet.transform.DOMove(new_target.position, time).SetEase(Bullet.Animation_Curve)); // MDebug.Log("start move "+emit.Duration()); emit.AppendCallback(() => { // MDebug.Log("start kaputt"); bullet.transform.Translate(new_target.position - bullet.transform.position); }); emit.AppendInterval(0.1f); emit.AppendCallback(() => { bullet.transform.GetComponentsInChildren <ParticleSystem>().ToList().ForEach(b => b.StopAll()); bullet.transform.GetComponentsInChildren <ParticleSystem>().ToList().ForEach(b => b.RemoveAllParticlesWhenInactive()); bullet.transform.DetachChildren(); GameObject.Destroy(new_target.gameObject); GameObject.Destroy(bullet); }); return(emit); ; }
protected override void OnInit(params object[] objs) { base.OnInit(objs); m_Animator = GetComponent <Animator>(); m_Animator.speed = 1; _damage = int.Parse(objs[0].ToString()); _targetLayer = int.Parse(objs[1].ToString()); m_BulletCfg = BulletConfig.GetData(Id); _timeCount = 0; RegistFsm(); }
public static void DecodeTable(string str) { str = StringUtils.Replace(str, '\r', '\n'); str = StringUtils.Replace(str, "\n\n", '\n'); List <List <string> > list = CSV.Parse(str); for (int i = 2, len = list.Count; i < len; i++) { BulletConfig item = new BulletConfig(); item.Decode(list[i]); Configs.Add(item); } }
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> /// <param name="side">0:sideA 1:sideB</param> /// <param name="type">TowerType</param> public virtual void Init(int side, int type) { this.side = side; this.type = type; switch (type) { case (int)TowerType.Normal: this.config = GameConfig.MainBulletConfig; break; case (int)TowerType.Main: this.config = GameConfig.NormalBulletConfig; break; } }
private void Awake() { Instance = this; //模拟第一种角色 RoleConfig role = new RoleConfig(); role.id = 1; role.prefabURL = "prefab/player"; roles.Add(role.id, role); //模拟第一种子弹 BulletConfig bullet = new BulletConfig(); bullet.id = 1; bullet.prefabURL = "bullet/FireBullet"; bullet.hitPrefabURL = "bullet/HitAnimation"; bullet.startV = 5f; bullet.rotationRange = 10; bullets.Add(bullet.id, bullet); //模拟第二种子弹 bullet = new BulletConfig(); bullet.id = 2; bullet.prefabURL = "bullet/FireBullet"; bullet.hitPrefabURL = "bullet/HitAnimation"; bullet.startV = 1f; bullet.rotationRange = 20; bullets.Add(bullet.id, bullet); //模拟第一种枪 GunConfig gun = new GunConfig(); gun.id = 1; gun.prefabURL = "gun/Gun"; gun.bulletId = 1; gun.cd = 100; gun.bulletCount = 1; guns.Add(gun.id, gun); //模拟第二种枪 gun = new GunConfig(); gun.id = 2; gun.prefabURL = "gun/Gun"; gun.bulletId = 2; gun.cd = 50; gun.bulletCount = 1; guns.Add(gun.id, gun); }
public void DecodeConfigItem() { for (int i = 0; i < list.Count; i++) { if (i == 1) { List <string> itemList = StringUtils.Split(list[1], ','); for (int n = 0; n < itemList.Count; n++) { int item = (int)StringUtils.ToNumber(itemList[n]); Bullets.Add(BulletConfig.GetConfig(item)); } } } list = null; }
void Awake() { moveHorizontal = true; myBody = GetComponent <Rigidbody2D>(); m_PhotonView = GetComponent <PhotonView>(); if (defaultbulletConfig == null) { Debug.LogWarning("MovementComponent, misisng default config !!"); enabled = false;//deactive } else { activeBulletConfig = defaultbulletConfig; } healthPlayer = GetComponent <HealthPlayer>(); }
void Update() { if (PhotonNetwork.connected && m_PhotonView.isMine == false) { return; } if (HealthPlayer.instane.isDead) { return; } timerChange -= Time.deltaTime; if (timerChange <= 0) { activeBulletConfig = defaultbulletConfig; } cooldown -= Time.deltaTime; cooldownDynamite -= Time.deltaTime; }
// Update is called once per frame void Update() { if (vo.fireFlag) { if (GameVO.Instance.currentTime - vo.lastShootTime > vo.config.cd) { vo.lastShootTime = GameVO.Instance.currentTime; //发射子弹 //获取子弹信息 BulletConfig bulletConfig = ConfigManager.Instance.GetBullet(vo.config.bulletId); GameObject bullet = Instantiate(ResourceManager.Instance.GetResource(bulletConfig.prefabURL), shootPointTransform.position, shootPointTransform.localRotation) as GameObject; bullet.GetComponent <Bullet>().config = bulletConfig; bullet.transform.parent = LayerManager.Instance.bulletLayer.transform; bullet.transform.localPosition = new Vector3(bullet.transform.localPosition.x, bullet.transform.localPosition.y, 0); float scale = shootPointTransform.lossyScale.x > 0 ? 1 : -1; //设置子弹的缩放,根据角色的左右 bullet.transform.localScale = new Vector3(bullet.transform.localScale.x * scale, bullet.transform.localScale.y, bullet.transform.localScale.z); //设置子弹的初始速度 bullet.GetComponent <Rigidbody2D>().velocity = new Vector2(bulletConfig.startV * scale, 0); } } }
protected void Shoot(BulletConfig bulletConfig) { Shoot(bulletConfig.Bullet, bulletConfig.Logic, bulletConfig.LocalPosition, bulletConfig.LocalRotation); }