Пример #1
0
        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);
            }
        }