public override void OnMsg(int msgID, object args) { if (!isActive) { return; } if (msgID == (int)Const_Util.UNIT_MSG.COLLIDER_OCCUR) { colliderCD = TestConfig.ColliderHeroHitBaseCD + TestConfig.ColliderHeroHitBaseCD * TestConfig.ColliderHeroHitCDRate * speed.y; } else if (msgID == (int)Const_Util.UNIT_MSG.GAS_ACC) { if (gasMoveEvent != null) { return; } gasMoveEvent = new SeqEvent(); OneTimerEvent oneEvent = new OneTimerEvent(GasMoveSpeedChgUp); TimerEvent continueTime = new TimerEvent(TestConfig.NitragenStayTime + TestConfig.NitragenMoveTime); gasMoveEvent.AddEvent(oneEvent); gasMoveEvent.AddEvent(continueTime); OneTimerEvent moveDownEvent = new OneTimerEvent(MoveSpeedChgDown); TimerEvent stayTime = new TimerEvent(TestConfig.NitragenMoveTime); gasMoveEvent.AddEvent(moveDownEvent); gasMoveEvent.AddEvent(stayTime); gasMoveEvent.Begin(); } else if (msgID == (int)Const_Util.UNIT_MSG.SKILL_DESC) { if (skillMoveEvent != null) { return; } mSkillHitInfo = (BattleMsgDef.SkillHitInfo)args; skillMoveEvent = new SeqEvent(); OneTimerEvent chgEvent = new OneTimerEvent(SkillMoveSpeedChgDown); TimerEvent continueTime = new TimerEvent(mSkillHitInfo.chgTime + mSkillHitInfo.continueTime); skillMoveEvent.AddEvent(chgEvent); skillMoveEvent.AddEvent(continueTime); OneTimerEvent resetSpeedEvent = new OneTimerEvent(SkillMoveSpeedReset); TimerEvent stayTime = new TimerEvent(mSkillHitInfo.resetTime); skillMoveEvent.AddEvent(resetSpeedEvent); skillMoveEvent.AddEvent(stayTime); skillMoveEvent.Begin(); } }
void OnTriggerEnter2D(Collider2D other) { if (skillCom == null) { skillCom = GetCom("SkillCom") as SkillCom; } if (skillCom == null) { return; } if (other.transform.tag == "SkillDrop" && this.transform.tag == "Player") { if (getRandomSkillCD <= 0.0f && !skillCom.HasSkill()) { SkillBrushMgr.instance.ReleaseItemByID(other.transform.parent.gameObject.GetInstanceID()); SendMsg((int)Const_Util.UNIT_MSG.GET_SKILL, null); getRandomSkillCD = 1.0f; } } else if (other.transform.tag == "Skill" && this.transform.tag == "Player") { if (skillEfxHitCD > Const_Util.FLT_EPSILON) { return; } SkillBaseInfoCom skillInfoCom = other.transform.parent.GetComponent <SkillBaseInfoCom>(); if (!CheckSKillHitValid(this.transform, skillInfoCom)) { return; } // disable skill efx obj if (other.transform.parent != null) { other.transform.parent.gameObject.SetActive(false); } int skillID = skillInfoCom.mSkillID; SKILL skill = DataCfgMgr.instance.GetSkill(skillID); // play hit efx SendMsg((int)Const_Util.UNIT_MSG.SKILL_HIT_EFX, skillID); BattleMsgDef.SkillHitInfo skillHitEfx = new BattleMsgDef.SkillHitInfo((int)skill.type, skill.speed_scale, skill.chg_time, skill.continue_time, skill.reset_time); switch (skill.type) { case (uint)Const_Util.SKILL_TYPE.SPEED_DESC: { SendMsg((int)Const_Util.UNIT_MSG.SKILL_DESC, skillHitEfx); break; } case (uint)Const_Util.SKILL_TYPE.SPEED_STOP: { break; } case (uint)Const_Util.SKILL_TYPE.SCREEN_PIC: { break; } case (uint)Const_Util.SKILL_TYPE.SELF_BUFF: { break; } default: { Debug.LogError("ColliderCom OnTriggerEnter2D undefine (int)skill.type:" + skill.type.ToString()); break; } } skillEfxHitCD = 1.0f; } if (collisionCD > Const_Util.FLT_EPSILON) { return; } if (other.transform.tag == "Player") { StatusCom statusCom = other.gameObject.GetComponent <StatusCom>(); Const_Util.UnitStatus status = statusCom.GetStatus(); if (status != Const_Util.UnitStatus.FLY) { if (this.transform.tag == "Enemy") { DoOnDestroy(); } else { SendMsg((int)Const_Util.UNIT_MSG.COLLIDER_OCCUR, null); } } collisionCD = 1.0f; } else if (other.transform.tag == "Enemy") { SendMsg((int)Const_Util.UNIT_MSG.COLLIDER_OCCUR, null); collisionCD = 1.0f; } }