Пример #1
0
    public override bool isQualified(LCharacterAction curAction, LCharacterInterface character, LChatacterInformationInterface information)
    {
        int targetId = character.GetTargetId();

        if (targetId != -1)
        {
            LCharacterInterface target;
            if (information.TryGetCharacter(targetId, out target))
            {
                if (null == target || target.IsDead())
                {
                    return(false);
                }
                var selPos = character.GetCurPosition();

                var targetPos = target.GetCurPosition();

                float f = Vector3.Distance(selPos, targetPos);
                if (f > mixDistance)
                {
                    return(true);
                }
            }
            //    LCharacterInterface target = information.GetCharacter(targetId);
        }
        return(false);
    }
Пример #2
0
    public override bool isQualified(LCharacterAction curAction, LCharacterInterface character, LChatacterInformationInterface information)
    {
        var _param = character.GetSkillCDSkillParams(cdName);

        if (null == _param)
        {
            return(true);
        }
        else if (!_param.CanUse(skillState))
        {
            return(false);
        }

        int targetId = character.GetTargetId();

        if (targetId != -1)
        {
            LCharacterInterface target;
            if (information.TryGetCharacter(targetId, out target))
            {
                if (null == target || target.IsDead())
                {
                    return(false);
                }
                var   selPos    = character.GetCurPosition();
                var   targetPos = target.GetCurPosition();
                float dis       = Vector3.Distance(selPos, targetPos);
                if (null != skillData && dis < skillData.skillRange)
                {
                    return(true);
                }
            }
        }
        return(false);
    }
Пример #3
0
    private void OnTriggerStay(Collider other)
    {
        LCharacterHitDataCmp v;

        if (triggers.dictionary.TryGetValue(other.GetInstanceID(), out v))//避免 GetComponent每帧产生的gc。
        {
            LCharacterAction.OnHit(v._collider, v.data, ref curAction, actionList, character, information);
        }
    }
Пример #4
0
    public override bool isQualified(LCharacterAction curAction, LCharacterInterface character, LChatacterInformationInterface information)
    {
        Vector3 pos;

        if (!information.getGroundHight(character.GetCurPosition(), out pos))
        {
            Debug.LogError("has error on fall");
            pos = character.GetCurPosition();
        }

        bool inAir = character.GetCurPosition().y - pos.y > 0.01f;

        return(inAir);
    }
Пример #5
0
    public static void UpdateAction(ref LCharacterAction curAction, List <LCharacterAction> actions, LCharacterInterface character, LChatacterInformationInterface information)
    {
        if (pauseActions)
        {
            return;
        }
        if (null != curAction)
        {
            if (curAction.isFinish(character, information))
            {
                //if (character.IsAI())
                // Debug.Log("end by self" + curAction.ToString());
                curAction.endAction(character, information);


                curAction = null;
            }
        }
        LCharacterAction oldAciton = curAction;

        for (int i = 0, c = actions.Count; i < c; i++)
        {
            var a = actions[i];
            if ((curAction == null || a.GetPriority() > curAction.GetPriority()) && a.isQualified(curAction, character, information))
            {
                if (character.IsAI())
                {
                    if (null != curAction)
                    {
                        Debug.Log(curAction.ToString() + " " + curAction.priority + " " + a.ToString() + "  " + a.priority);
                    }
                }
                curAction = a;
            }
        }
        if (curAction != oldAciton || (null == curAction))
        {
            if (null != oldAciton)
            {
                oldAciton.endAction(character, information);
            }

            curAction.beginAction(character, information);
        }
        if (null != curAction)
        {
            curAction.doAction(character, information);
        }
        //beginAction
    }
Пример #6
0
    void OnTriggerEnter(Collider other)
    {
        LCharacterHitDataCmp hitData = other.gameObject.GetComponent <LCharacterHitDataCmp>();

        if (hitData != null)
        {
            OnHit(hitData.data);
            LCharacterAction.OnHit(other, hitData.data, ref curAction, actionList, character, information);
            hitData._collider    = other;
            hitData.id           = hitData._collider.GetInstanceID();
            hitData._colliderObj = other.gameObject;
            if (hitData.needTouchState)
            {
                triggers.Add(hitData.id, hitData);
            }
        }
    }
Пример #7
0
    public override bool isQualified(LCharacterAction curAction, LCharacterInterface character, LChatacterInformationInterface information)
    {
        if (VirtualInput.buttons[(int)button])
        {
            Vector3 pos;
            if (!information.getGroundHight(character.GetCurPosition(), out pos))
            {
                Debug.LogError("has error");
                pos = character.GetCurPosition();
            }


            bool inAir = character.GetCurPosition().y - pos.y > 0.001f;

            return(!inAir);
        }

        return(false);
    }
Пример #8
0
    public override bool isQualified(LCharacterAction curAction, LCharacterInterface character, LChatacterInformationInterface information)
    {
        var     pos0 = character.GetCurPosition();
        Vector3 pos;

        if (!information.getGroundHight(pos0, out pos))
        {
            Debug.LogError("has error");
            pos = character.GetCurPosition();
        }
        bool inAir = pos0.y - pos.y > 0.01f;

        if (VirtualInput.buttons[(int)button] && (!isOnGround || !inAir) /*  && character.CanUsedSkill(cdName, skillState) */)
        {
            var _param = character.GetSkillCDSkillParams(cdName);
            if (null != _param && _param.CanUse(skillState))
            {
                skill_type = _param.type;
                if (skill_type == SkillParams.TYPE.DRAG_TARGET)
                {
                    curTargetId = character.GetTargetId();
                    LCharacterInterface chr;
                    if (information.TryGetCharacter(curTargetId, out chr))
                    {
                        Vector3 p0 = character.GetCurPosition();
                        Vector3 p1 = chr.GetCurPosition();
                        p0.y = 0f;
                        p1.y = 0f;
                        float distance = Vector3.Distance(p0, p1);
                        if (distance < skillData.skillRange)
                        {
                            return(true);
                        }
                    }
                    return(false);
                }
                return(true);
            }
        }
        return(false);
    }
Пример #9
0
 public static void OnHit
     (Collider collider, LCharacterColliderData cdata, ref LCharacterAction curAction, List <LCharacterAction> actions, LCharacterInterface character, LChatacterInformationInterface information)
 {
     //if (character.IsAI())
     //   Debug.Log(curAction.ToString() + " check stop");
     if (curAction != null && !curAction.CanStopByTrigger(cdata, collider, character, information))
     {
         return;
     }
     for (int i = 0, c = actions.Count; i < c; i++)
     {
         var a = actions[i];
         if (a.OnTrigger(cdata, collider, character, information))
         {
             if (null != curAction)
             {
                 curAction.endAction(character, information);
             }
             curAction = a;
             a.beginAction(character, information);
             break;
         }
     }
 }
Пример #10
0
 public override bool isQualified(LCharacterAction curAction, LCharacterInterface character, LChatacterInformationInterface information)
 {
     return(false);
 }
Пример #11
0
 public abstract bool isQualified(LCharacterAction curAction, LCharacterInterface character, LChatacterInformationInterface information);
Пример #12
0
 void Update()
 {
     OnUpdate();
     UpdateTrigger();
     LCharacterAction.UpdateAction(ref curAction, actionList, character, information);
 }
Пример #13
0
 public void AddAction(LCharacterAction action)
 {
     CheckInterface();
     StartCoroutine(action.onInit(loader, character, AddCoroutine));
     actionList.Add(action);
 }
Пример #14
0
 public void RemoveAciton(LCharacterAction action)
 {
     action.onRelease();
     actionList.Remove(action);
 }
Пример #15
0
 public void OnHit(Collider other, LCharacterColliderData hitData, Vector3 dir, ref LCharacterAction curAction, List <LCharacterAction> actionList, LChatacterInformationInterface information)
 {
     LCharacterAction.OnHit(other, hitData, ref curAction, actionList, this, information);
 }
Пример #16
0
 public override bool isQualified(LCharacterAction curAction, LCharacterInterface character, LChatacterInformationInterface information)
 {
     return(VirtualInput.isDirectKeyDown);
 }