void SetBullockCarts(long id, float lvl) { MonsterData md = new MonsterData(id, (int)lvl); md.groupIndex = 1; md.lvlRate = lvl; md.state = Modestatus.NpcPlayer; cartCs = BattleUtil.AddMoveComponents(cart, md.attrNode.modelNode); cartCs.pm.nav.obstacleAvoidanceType = UnityEngine.AI.ObstacleAvoidanceType.NoObstacleAvoidance; cartCs.pm.nav.avoidancePriority = 59; cartCs.InitData(md); BullockCarts bc = UnityUtil.AddComponetIfNull <BullockCarts>(cart); if (bc) { bc.OnArrDes += () => { DungeonOverHandle(null); }; cartCs.OnHit += bc.BeAttacked; } cartCs.OnDead += (c) => { WinCondition(false); }; cartCs.moveSpeed = cartCs.moveInitSpeed; cartCs.AddHpBar(); AddCs(cartCs); if (sceneType == SceneType.KV) { GameObject prompt = new GameObject("UIPrompt"); prompt.transform.parent = cartCs.transform; prompt.transform.localPosition = new Vector3(0, 1.2f, 0); CDTimer.GetInstance().AddCD(0.5f, (int count, long cid) => { HUDAndHPBarManager.instance.AddPrompt(prompt.transform); }); } cart.tag = "Cart"; }
protected override void OnFixedUpdate() { if (GameLibrary.isBossChuChang) { return; } if (!GameLibrary.Instance().CanControlSwitch(thisCs.pm)) { thisCs.pm.Stop(); return; } if (autoPoints.Length > 0) { CheckAutos(); } targetCs = GetAttackTarget(thisCs.TargetRange); thisCs.SetAttackTargetTo(targetCs); if (isAttack && targetCs != null) { float targetRadius = targetCs.cc != null ? targetCs.CharData.attrNode.model_size * targetCs.cc.radius : 0.2f; float selfRadius = thisCs.cc != null ? thisCs.cc.radius : 0.2f; float minDis = targetRadius + selfRadius; if (BattleUtil.ReachPos(transform.position, targetCs.transform.position, minDis)) { if (avoidPos == Vector3.zero) { avoidPos = BattleUtil.GetCanNavPos(thisCs.pm.nav, transform.position + 2f * minDis * (transform.position - targetCs.transform.position).normalized); //Debug.LogError("set pos to " + avoidPos); } //if(thisCs == CharacterManager.playerCS) //{ // if(avoidPoint == null) // { // avoidPoint = GameObject.CreatePrimitive(PrimitiveType.Cube); // avoidPoint.transform.localScale = 0.1f * Vector3.one; // } // avoidPoint.transform.position = avoidPos; //} //Debug.LogError("pos is " + avoidPos); } else { avoidPos = Vector3.zero; //Debug.LogError("set pos to 0"); } if (avoidPos != Vector3.zero) { if (BattleUtil.ReachPos(transform.position, avoidPos, 0.1f)) { avoidPos = Vector3.zero; //Debug.LogError("reach pos and reset to 0"); } else { thisCs.pm.Approaching(avoidPos, 0f); //Debug.LogError("nav to " + avoidPos); } } else if (!aiSkillHandler.NormalAISkill()) { aiSkillHandler.NormalAttack(); } } else { if (null != protectionCs) { BullockCarts bc = protectionCs.GetComponent <BullockCarts>(); if (bc == null) { return; } Vector3 targetPos = Vector3.zero; if (bc.autoPoint != null) { targetPos = bc.autoPoint.transform.position + Vector3.forward * 0.2f; } if (bc.autoPoint == null || BattleUtil.ReachPos(transform.position, targetPos, 0.1f)) { thisCs.pm.Stop(); } else { thisCs.pm.Approaching(targetPos); } } else { AutoNav(); } } }