public override IEnumerator RunLogic()
        {
            var tempRunNum = runNum;
            var config     = aiCharacter.attribute.npcConfig;
            var atype      = config.GetActionBySkillId(cmd.proto.SkillAction.SkillId);

            yield return(new WaitForSeconds(atype.hitTime));

            if (!quit && tempRunNum == runNum)
            {
                skillStateMachine.OnEvent(new MyEvent()
                {
                    skillEvtType = SkillDataConfig.SkillEvent.EventTrigger
                });
            }
            yield return(new WaitForSeconds(atype.totalTime - atype.hitTime));

            if (!quit && tempRunNum == runNum)
            {
                aiCharacter.ChangeState(AIStateEnum.IDLE);
            }

            /*
             * var passTime = 0.0f;
             * while (!quit && passTime < holdTime)
             * {
             *  passTime += Time.deltaTime;
             *  yield return null;
             * }
             * if (!quit)
             * {
             *  aiCharacter.ChangeState(AIStateEnum.IDLE);
             * }
             */
        }
Exemple #2
0
        /// <summary>
        /// 创建子弹服务器通知客户端 Trigger了子弹创建
        /// 播放动作帧上面的特效和事件
        /// </summary>
        /// <returns></returns>
        public override IEnumerator RunLogic()
        {
            var config     = aiCharacter.GetAttr().npcConfig;
            var atype      = config.GetAction(ActionType.Attack);
            var tempRunNum = runNum;

            yield return(new WaitForSeconds(atype.hitTime));

            if (!quit && tempRunNum == runNum)
            {
                skillStateMachine.OnEvent(new MyEvent()
                {
                    skillEvtType = SkillDataConfig.SkillEvent.EventTrigger
                });
            }

            yield return(new WaitForSeconds(atype.totalTime - atype.hitTime));

            if (!quit && tempRunNum == runNum)
            {
                aiCharacter.ChangeState(AIStateEnum.IDLE);
            }
        }