BehaveResult Tick(Tree sender) { if (Time.time - startHideTime > CHECK_Hide_TIME) { Vector3 dir = mFind.GetHideDir(PeCreature.Instance.mainPlayer.peTrans.position, position, Enemies); if (mFind.bNeedHide) { Vector3 dirPos = position + dir.normalized * m_Data.RunRadius; MoveToPosition(dirPos, SpeedState.Run); } else { StopMove(); FaceDirection(PeCreature.Instance.mainPlayer.peTrans.position - position); //if(entity.target.beSkillTarget) //{ // MoveDirection(transform.right,SpeedState.Run); //} //else //{ // StopMove(); // FaceDirection(PeCreature.Instance.mainPlayer.peTrans.position - position); //} } startHideTime = Time.time; } if (Time.time - startRunTime > CHECK_TIME || entity.HPPercent > m_Data.minHpPercent || ItemAsset.SelectItem.HasCanEquip(entity, EeqSelect.combat, AttackType.Ranged)) { SetCambat(true); return(BehaveResult.Success); } //吃到了合适的属性值或者没有合适的药品时停止 ItemAsset.ItemObject mEatItem; if (NpcEatDb.IsContinueEat(entity, out mEatItem)) { if (entity.UseItem.GetCdByItemProtoId(mEatItem.protoId) < PETools.PEMath.Epsilon) { UseItem(mEatItem); } } return(BehaveResult.Running); }
BehaveResult Tick(Tree sender) { if (!NpcTypeDb.CanRun(NpcCmdId, ENpcControlType.Recourse)) { return(BehaveResult.Failure); } // Request req = GetRequest(EReqType.FollowPath) as RQFollowPath; // if(req != null && !req.CanRun()) // { // specialRecurse = true; // } // else // { // specialRecurse = false; // } if (Enemy.IsNullOrInvalid(attackEnemy)) { return(BehaveResult.Success); } if (Time.time - checkStarTime > Check_TIME) { checkStarTime = Time.time; if (!entity.NpcCmpt.HasEnemyLocked()) { entity.target.ClearEnemy(); } } float Hp = GetAttribute(AttribType.Hp); float HpMax = GetAttribute(AttribType.HpMax); if (Hp / HpMax >= 0.3f) //!specialRecurse && { return(BehaveResult.Success); } if (Time.time - hideStarTime > HIDE_TIME) { mdir = mfind.GetHideDir(playerTrans.position, position, Enemies); hideStarTime = Time.time; } Vector3 dirPos = position + mdir.normalized * 10.0f; if (mfind.bNeedHide) { MoveToPosition(dirPos, SpeedState.Run); } else { StopMove(); FaceDirection(playerTrans.position - position); } //吃到了合适的属性值或者没有合适的药品时停止 ItemAsset.ItemObject mEatItem; if (NpcEatDb.IsContinueEat(entity, out mEatItem)) { if (entity.UseItem.GetCdByItemProtoId(mEatItem.protoId) < PETools.PEMath.Epsilon) { UseItem(mEatItem); } } SetCambat(false); return(BehaveResult.Running); }