/// <summary>
    /// 播放技能,默认一段攻击
    /// </summary>
    /// <param name="id"></param>
    /// <param name="state"></param>
    public void PlaySkill(int id, int state)
    {
        isPlaySkill     = true;
        this.skillState = state;
        var skill = Skills.SkillList.Find((s) => s.Id == id);

        if (skill != null)
        {
            this.curSkill = skill;
            var c = aniPlayer.GetClip(curSkill.Blocks[skillState].AniName);
            aniPlayer.Play(c);
        }
    }
示例#2
0
 /// <summary>
 /// 播放技能,默认一段攻击
 /// </summary>
 /// <param name="id"></param>
 /// <param name="block"></param>
 public void PlaySkill(int id, int block)
 {
     isPlaySkill             = true;
     this.CurSkillBlockIndex = block;
     try
     {
         var skill = Skills.SkillList[id];
         if (skill != null)
         {
             this.curSkill = skill;
             curSkillBlock = curSkill.Blocks[CurSkillBlockIndex];
             var c = aniPlayer.GetClip(curSkillBlock.AniName);
             aniPlayer.Play(c);
         }
     }
     catch (Exception e)
     {
         Debug.LogError(string.Format("技能数据错误: id-{0} block-{1}", id, block));
     }
 }
示例#3
0
    /// <summary>
    /// 当前技能block
    /// </summary>
    private void OnGUI_DrawSkillBlock()
    {
        GUILayout.BeginVertical(GUILayout.Width(300), GUILayout.Height(800));

        GUILayout.Label("技能块列表:");
        if (curSkillblockList != null)
        {
            int count = curSkillblockList.Count;
            for (int i = 0; i < count; i++)
            {
                GUILayout.BeginVertical();
                if (curSkillblockIndex == i)
                {
                    GUI.color = Color.green;
                }
                else
                {
                    GUI.color = Color.white;
                }

                var sb = this.curSkillblockList[i];
                GUILayout.BeginHorizontal();
                if (GUILayout.Button(string.Format("[{0}] -" + sb.AniName, i)))
                {
                    curSkillblockIndex  = i;
                    curAniClip          = ani.GetClip(sb.AniName);
                    curSkillblock       = sb;
                    curSkillEventList   = EditorSkillTool.GetCurFrameEventList(this.curframe, curSkillblock);
                    curSkillEvnetIndex  = -1;
                    curSkillEventEditor = null;
                    GUI.FocusControl("RefreshFocus");
                }

                GUI.color = GUI.backgroundColor;
                if (GUILayout.Button("DEL", GUILayout.Width(35)))
                {
                    this.curSkillblockList.Remove(sb);
                    count = curSkillblockList.Count;
                    curSkillblockIndex  = -1;
                    curSkillblock       = null;
                    curSkillEventList   = null;
                    curSkillEvnetIndex  = -1;
                    curAniClip          = null;
                    curSkillEventEditor = null;

                    GUI.FocusControl("RefreshFocus");
                }

                GUILayout.EndHorizontal();

                GUILayout.EndVertical();
            }
        }

        GUILayout.Space(20);
        if (curSkillblockList != null)
        {
            if (GUILayout.Button("创建skillBlock"))
            {
                Window_SelectAniClip window =
                    (Window_SelectAniClip)EditorWindow.GetWindow(typeof(Window_SelectAniClip), false, "SelectAniClip");
                window.Show(this.curSkillblockList, this.ani);
            }
        }

        GUILayout.EndVertical();

        TableToolMenu.Layout_DrawSeparatorV(Color.gray, 2);
    }
 void ParseBlock(StateActionBlock block, AI_StateItem ai_item, AI_StateAttribute ai_attribute)
 {
     foreach (var f in block.funcs)
     {
         if (f.classname.Equals("attack"))
         {
             AniClip ac    = ap.GetClip(block.playani);
             SubClip subAc = null;
             if (block.playsubani != "" && block.playsubani != null)
             {
                 subAc = ac.GetSubClip(block.playsubani);
             }
             int begin = 0;
             int end   = 0;
             if (subAc != null)
             {
                 begin = (int)subAc.startframe;
                 end   = (int)subAc.endframe;
             }
             else
             {
                 begin = 0;
                 end   = ac.frames.Count - 1;
             }
             for (int i = begin; i <= end; i++)              //第一层,遍历frame
             {
                 foreach (var box in ac.frames[i].boxesinfo) //第二层遍历box
                 {
                     if (box.mBoxType.Equals("box_attack"))
                     {
                         float pos = (box.mPosition.z + box.mSize.z / 2);
                         if (ai_attribute.attackpos < pos)
                         {
                             ai_attribute.attackpos = pos;
                         }
                     }
                 }
             }
         }
         else if (f.classname.Equals("move") || f.classname.Equals("force"))
         {
             ai_attribute.movenum = (ai_attribute.movenum + f.vecParam0);  //记下位移 作为判断条件
         }
     }
     foreach (var s in table.allStates)
     {
         if (s.conditions.Count == 0)
         {
             continue;
         }
         foreach (var c in s.conditions)
         {
             if (!c.stateBefore.Equals("stand") && !c.stateBefore.Equals("walk"))
             {
                 if (c.stateBefore.Equals(ai_attribute.name))
                 {
                     AI_CanChangeState _s = new AI_CanChangeState();
                     _s.state = s.name;
                     if (c.cmdActive != "5")
                     {
                         _s.cmdstr = c.cmdActive;
                         ai_attribute.canChangeState.Add(_s);
                     }
                 }
             }
         }
     }
     ai_item.cmdAttribute.Insert(0, ai_attribute);
 }