/// <summary> /// 执行攻击 /// </summary> private void DoAttack() { if (m_effect != null) { /*m_effect.DestroyEffect(); * m_effect = null;*/ GameObject.Destroy(m_effect); } GameObject.Destroy(m_effectGo); GameObject posgo = m_Owner.m_Skin.ProPerty.HelpPoint.GetVauleByKey(HelpPointName.FirePos); if (posgo != null && m_Owner.m_target != null) { GameObjectActionExcute gae = EffectM.LoadEffect("effect/prefab/", "1003031", posgo.transform.position, m_Owner.m_target.m_thisT); if (gae != null) { GameObjectActionDelayDestory ndEffect = new GameObjectActionDelayDestory(1.3f); gae.AddAction(ndEffect); } } m_Owner.m_Skin.tRoot.position = m_Owner.m_Parent.GetSkin().tRoot.position; m_DoAttackFun(m_skillInfo, m_times); m_petState = Pet1002State.stand; m_CurrentAction = null; m_bGotoFirePos = false; m_bGotoAttackPos = false; }
public override void ColliderProc(Collision collision) { if (m_bBeKicked) { return; } LifeProperty lp = collision.gameObject.GetComponent <LifeProperty>(); if (lp == null) { return; } IggFloor floor = collision.gameObject.GetComponent <LifeProperty>().GetLife() as IggFloor; if (floor != null) { m_fLiveCounter = 0; if (floor.isDead) { return; } if (m_Owner.m_Skill != null) { Life lifeM = m_Owner.GetCollisionGo(collision); FlyCollisionInfo Info = new FlyCollisionInfo(); (m_Owner.m_Skill as FireSkill).FlyInfo = Info; Info = (m_Owner.m_Skill as FireSkill).FireTrigger(collision, lifeM, m_Owner, true, true, m_Owner.m_listCollisionGoID.Count, FlyDir.Bottom); if (!floor.isDead && lifeM != null) { m_fFallSpeed = 0; m_Owner.m_Skin.tRoot.parent = BattleEnvironmentM.GetLifeMBornNode(true); m_Owner.m_Skin.tRoot.localPosition = U3DUtil.SetZ(m_Owner.m_Skin.tRoot.localPosition, 0.2f); //设置蹦蹦的Y位置 m_Owner.m_Skin.tRoot.position = U3DUtil.SetY(m_Owner.m_Skin.tRoot.position, floor.GetMapGrid().WorldPos.y); m_bHitFloor = true; m_petState = Pet1002State.waitKick; m_flyState = AnimatorState.FlyAttack01100; } } } }
/// <summary> /// 攻击技能释放 /// </summary> public void DoSkill(DoAttackFun DoAttackFun, SoldierSkill info, int times) { if (info.m_type == 1029 || info.m_type == 1031) { string name = "1003101"; if (info.m_type == 1031) { name = "1003111"; } GameObject posgo = m_Owner.m_Skin.ProPerty.HelpPoint.GetVauleByKey(HelpPointName.LeftHandPos); if (posgo != null) { GameObjectActionExcute gae = EffectM.LoadEffect(EffectM.sPath, name, posgo.transform.position, posgo.transform); m_effectGo = gae.gameObject; if (gae != null) { GameObjectActionDelayDestory ndEffect = new GameObjectActionDelayDestory(2f); gae.AddAction(ndEffect); } } } m_petState = Pet1002State.toAttackPos; m_DoAttackFun = DoAttackFun; m_skillInfo = info; m_times = times; m_Owner.m_target = m_Owner.m_Parent.m_Skill.m_AttackTarget; Int2 mappos = m_Owner.m_Parent.GetMapPos(); if ((m_Owner.m_Parent as Role).WalkDir == WalkDir.WALKLEFT) { mappos.Unit -= 3; } else { mappos.Unit += 3; } m_run.SetBorn(mappos, 0); m_run.UpdataPath(); }
// Update is called once per frame public override void FixUpdate() { if (m_bBeginFall) { m_fLiveCounter += Time.deltaTime; m_Owner.m_Skin.Move(m_flyState, Vector3.down * m_fFallSpeed * Time.deltaTime, ActionMode.Delta); if (m_fLiveCounter > 5.0f) { m_Owner.Dead(); } } else { m_Owner.m_Skin.Move(m_flyState, Vector3.zero, ActionMode.Delta); } if (m_fCounter00300 > 0) { m_fCounter00300 -= Time.deltaTime; } else { SetFallDown(); m_fCounter00300 = float.MaxValue; } if (m_bBeginKick) { if (m_fKickCounter > 0) { m_fKickCounter -= Time.deltaTime; m_flyState = AnimatorState.FlyFallStand01200;//蹦蹦被踢飞动作 GameObject posgo = m_Owner.m_Parent.GetSkin().ProPerty.HelpPoint.GetVauleByKey(HelpPointName.petFollowPos); Vector3 pos = posgo.transform.position; Vector3 pos1; if (m_fKickCounter < 1.25f) //分支 蹦蹦开始被踢的时间 { m_fKickSlerpCounter += Time.deltaTime; pos1 = Vector3.Slerp(m_Owner.m_Skin.tRoot.position, pos, m_fKickSlerpCounter / 1.25f);//分支 } else { pos1 = m_Owner.m_Skin.tRoot.position; } m_Owner.m_Skin.SetMirror(m_bKickDir == Vector3.left ? WalkDir.WALKLEFT : WalkDir.WALKRIGHT); m_Owner.m_Skin.Move(m_flyState, pos1, ActionMode.Set, false); m_bBeKicked = true; } else { //Debug.Log("KickFlyEnd"); m_petState = Pet1002State.Follow; m_bBeginFall = false; m_bBeginKick = false; m_flyState = AnimatorState.Walk; m_Owner.SetMoveState(MoveState.Walk); //m_Owner.m_Core.m_MoveState = MoveState.Walk; Vector3 pos = Vector3.zero; //Vector3 pos = new Vector3(MapGrid.m_width *1* (m_bKickDir == Vector3.left ? -1 : 1), 0, 0); m_Owner.m_Skin.Move(m_flyState, pos, ActionMode.Delta); m_Owner.m_Skin.tRoot.localPosition = U3DUtil.SetZ(m_Owner.m_Skin.tRoot.localPosition, 0); } } }