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); }
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); }
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); } }
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); }
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 }
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); } } }
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); }
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); }
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; } } }
public override bool isQualified(LCharacterAction curAction, LCharacterInterface character, LChatacterInformationInterface information) { return(false); }
public abstract bool isQualified(LCharacterAction curAction, LCharacterInterface character, LChatacterInformationInterface information);
void Update() { OnUpdate(); UpdateTrigger(); LCharacterAction.UpdateAction(ref curAction, actionList, character, information); }
public void AddAction(LCharacterAction action) { CheckInterface(); StartCoroutine(action.onInit(loader, character, AddCoroutine)); actionList.Add(action); }
public void RemoveAciton(LCharacterAction action) { action.onRelease(); actionList.Remove(action); }
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); }
public override bool isQualified(LCharacterAction curAction, LCharacterInterface character, LChatacterInformationInterface information) { return(VirtualInput.isDirectKeyDown); }