public void TickFire() { // 给所有的准备中武器赋值当前的Actor位置坐标和朝向 foreach (var skillContainer in skills) { //Log.Trace( "武器箱武器 ActorType:"+skillContainer.GetActorType()+" ActorID" + skillContainer.GetActorID() + " Body id:"+skillContainer.GetBody().Id); //Log.Trace("当前Actor Body id" + container.GetBodyId() + " 位置" + // container.GetPhysicalinternalBase().GetBody().Position + " 朝向" + // container.GetPhysicalinternalBase().GetBody().Forward); //Log.Trace("复制前Actor Body id" + skillContainer.GetBody().Id + " 位置" + // skillContainer.GetBody().Position + " 朝向" + // skillContainer.GetBody().Forward); container.Detection(skillContainer); //Log.Trace("复制后Actor Body id" + skillContainer.GetBody().Id + " 位置" + // skillContainer.GetBody().Position + " 朝向" + // skillContainer.GetBody().Forward); skillContainer.SetOwnerID(container.GetActorID()); skillContainer.SetCamp(container.GetCamp()); } //设置技能cd //更新cd集合中的当前cd //Tick集合中所有cd时间 for (int i = 0; i < skillcd.Count; i++) { if (skillcd[i] == 0) { continue; } if (skills[i] == null) { continue; } if (skills[i].GetActorType() == ActorTypeBaseDefine.ContinuousLaserActor) { continue; } //技能cd时间 var cd = skills[i].GetSkillCd(); if (cd == 0) { cd = 1; } //当前技能cd等于 当前时间减去发射时时间 var currentcd = (DateTime.Now.Ticks - skillcd[i]) / 1e4; //如果当前cd时间大于等于技能cd 则当前cd设置为0 if (currentcd >= cd) { skillcd[i] = 0; } //Log.Trace("TickFire skilltype:" + skills[i].GetActorType() + " MAX CD:" + cd + " " + skills[i].GetSkillCd() + " 发射时间:" + skillcd[i] + " 当前时间" + currentcd); } int h = 0; for (int i = 0; i < skillcd.Count; i++) { if (skills[i] == null) { continue; } if (skills[i].GetActorType() != ActorTypeBaseDefine.ContinuousLaserActor) { continue; } h = i; //技能cd时间 var cd = skills[i].GetSkillCd(); if (cd == 0) { cd = 1; } //当前技能cd等于 当前时间减去发射时时间 skillcd[i]++; if (skillcd[i] > cd) { skillcd[i] = cd; } //Log.Trace(skillcd[i] + " ++++++"); //如果当前cd时间大于等于技能cd 则当前cd设置为0 //Log.Trace("TickFire skilltype:" + skills[i].GetActorType() + " MAX CD:" + cd + " " + skills[i].GetSkillCd() + " 发射时间:" + skillcd[i] + " 当前时间" + currentcd); } //lastframe = DateTime.Now.Ticks; var weaponlist = skillInitList.Where(s => s.ActorType == ActorTypeBaseDefine.ContinuousLaserActor).ToList(); // 给激光赋值 foreach (var skillContainer in weaponlist) { if (skills[h].GetActorType() == ActorTypeBaseDefine.ContinuousLaserActor) { skillcd[h] = skillcd[h] - 2; //Log.Trace(skillcd[h] + " ------"); } container.RingDetection((level.GetActor(skillContainer.ActorID))); } if (skillcd[h] <= 0 && weaponlist.Count > 0) { Destroy(ActorTypeBaseDefine.ContinuousLaserActor); } }