public override bool OnTrigger(LCharacterColliderData cdata, Collider other, LChatacterInterface character, LChatacterInformationInterface information) { if (cdata.type == "tra") { LCharacterTransferData data = cdata.getData <LCharacterTransferData>(); jumpSpeed = data.speed; jumpHeight = data.height; beginPositon = character.GetCurPosition(); endPositoin = data.target.position; return(true); } return(false); }
public static void OnHit (Collider collider, LCharacterColliderData cdata, ref LChatacterAction curAction, List <LChatacterAction> actions, LChatacterInterface character, LChatacterInformationInterface information) { 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; } } }
private void Start() { LCharacterHitDataCmp hdc = GetComponent <LCharacterHitDataCmp>(); if (null == hdc) { hdc = gameObject.AddComponent <LCharacterHitDataCmp>(); } LCharacterColliderData cdata = hdc.data; LCharacterTransferData data = new LCharacterTransferData(); cdata.type = "tra"; data.target = target; data.height = height; data.speed = speed; cdata.data = data; }
public override bool CanStopByTrigger(LCharacterColliderData cdata, Collider other, LCharacterInterface character, LChatacterInformationInterface information) { //暂时倒地不能攻击 if (onGround) { return(false); } if (!base.CanStopByTrigger(cdata, other, character, information)) { return(false); } if (cdata.type == "hit") { LCharacterHitData data = cdata.getData <LCharacterHitData>(); ActionType status = (ActionType)data.value.GetValueInt("status", 0); if (status == ActionType.HIT_FLY || status == ActionType.HIT_DOWN) { beBreak = true; return(true); } float slow_motion = data.value.GetValueFloat("slow_motion", 0f); float air_delay = data.value.GetValueFloat("air_delay", 0f); if (data.firstHit) { if (data.cdState == CdState.HIT) { LCharacterInterface chr; if (information.TryGetCharacter(data.characterId, out chr)) { chr.updateCDState(data.cdName, data.skillState); } } if (slow_motion > 0.0001f) { information.slowly(0.01f, slow_motion); data.firstHit = true; } character.ResetAndPlay(animNameFly); this.air_delay = air_delay; } return(false); } return(true); }
public override bool OnTrigger(LCharacterColliderData cdata, Collider other, LChatacterInterface character, LChatacterInformationInterface information) { if (cdata.type == "hit") { LCharacterHitData data = cdata.getData <LCharacterHitData>(); ActionType status = (ActionType)data.value.GetValueInt("status", 0); if (GetActionType() == status) { if (!data.hittedObject.Contains(character.GetId()) && null != data.value) { data.hittedObject.Add(character.GetId()); if (character.IsAI()) { character.AddHaterd(data.characterId, 1); } float slow_motion = data.value.GetValueFloat("slow_motion", 0f); if (data.firstHit) { if (data.cdState == CdState.HIT) { LChatacterInterface chr = information.GetCharacter(data.characterId); chr.updateCDState(data.cdName, data.skillState); } if (slow_motion > 0.0001f) { information.slowly(0.01f, slow_motion); data.firstHit = true; } } Vector3 dir = other.transform.forward; dir.y = 0; dir.Normalize(); SetHitData(data, dir); return(true); } } } return(false); }
public virtual bool CanStopByTrigger(LCharacterColliderData cdata, Collider other, LCharacterInterface character, LChatacterInformationInterface information) { var v = character.GetData((int)ACTIONATA.ROLE_STATE); if (v == null) { return(true); } if (cdata.type == "hit") { //如果是攻击 LCharacterHitData data = cdata.getData <LCharacterHitData>(); long state = System.Convert.ToInt64(v); //如果角色拥有霸体状态. if (state == 1 || state == 2) { //这里加角色检查 //可以让主角打中人或者 霸体状态被打中才发生减速. float slow_motion = data.value.GetValueFloat("slow_motion", 0f); if (data.firstHit) { if (data.cdState == CdState.HIT) { LCharacterInterface chr; if (information.TryGetCharacter(data.characterId, out chr)) { chr.updateCDState(data.cdName, data.skillState); } } if (slow_motion > 0.0001f) { information.slowly(0.01f, slow_motion); data.firstHit = true; } } return(false); } } return(true); }
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; } } }
private void Start() { if (gameObject.layer < 2) { gameObject.layer = GlobalCamp.globalCampInformations[0].other; } LCharacterHitDataCmp hdc = GetComponent <LCharacterHitDataCmp>(); if (null == hdc) { hdc = gameObject.AddComponent <LCharacterHitDataCmp>(); } hdc.needTouchState = false; LCharacterColliderData cdata = hdc.data; LCharacterTransferData data = new LCharacterTransferData(); cdata.type = "tra"; data.target = target; data.height = height; data.speed = speed; cdata.data = data; Collider c = gameObject.GetComponent <Collider>(); if (null == c) { BoxCollider b = gameObject.AddComponent <BoxCollider>(); b.isTrigger = true; } else { c.isTrigger = true; } }
public virtual bool OnTrigger(LCharacterColliderData cdata, Collider other, LChatacterInterface character, LChatacterInformationInterface information) { //return true 则消息不再向下传递 return(false); }
public override bool OnTrigger(LCharacterColliderData cdata, Collider other, LCharacterInterface character, LChatacterInformationInterface information) { if (cdata.type == "hit") { LCharacterHitData data = cdata.getData <LCharacterHitData>(); ActionType status = (ActionType)data.value.GetValueInt("status", 0); if (GetActionType() == status) { if (!data.hittedObject.Contains(character.GetId()) && null != data.value) { character.OnHit(data); data.hittedObject.Add(character.GetId()); if (character.IsAI()) { character.AddHaterd(data.characterId, 1); } float slow_motion = data.value.GetValueFloat("slow_motion", 0f); if (data.firstHit) { if (data.cdState == CdState.HIT) { LCharacterInterface chr; if (information.TryGetCharacter(data.characterId, out chr)) { chr.updateCDState(data.cdName, data.skillState); } } if (slow_motion > 0.0001f) { information.slowly(0.01f, slow_motion); data.firstHit = true; } } int hit_dir = data.value.GetValueInt("hit_dir", 0); Vector3 dir; if (hit_dir == 0) { dir = other.transform.forward; } else if (hit_dir == 1) { dir = character.GetCurPosition() - other.transform.position; } else if (hit_dir == 2) { LCharacterInterface target; if (information.TryGetCharacter(data.characterId, out target)) { dir = character.GetCurPosition() - target.GetCurPosition(); } else { dir = Vector3.forward; } } else { LCharacterInterface target; if (information.TryGetCharacter(data.characterId, out target)) { dir = target.GetCurPosition() - character.GetCurPosition(); } else { dir = Vector3.forward; } } dir.y = 0; dir.Normalize(); SetHitData(data, dir); return(true); } } } return(false); }
public virtual void OnHit(LCharacterColliderData data) { }
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); }