public bool IsPlayerAround(GameObject currentObject, float distance) { TargetCollector player = FindTargetTag(PlayerTag); if (player != null && player.Targets.Length > 0) { for (int i = 0; i < player.Targets.Length; i++) { if (player.Targets[i] != null && currentObject.transform.root != player.Targets[i].transform) { if (Vector3.Distance(currentObject.transform.position, player.Targets[i].transform.position) <= distance) { return(true); } } } } return(false); }
private GameObject findPlayerByID(string userID) { TargetCollector allplayer = UnitZ.aiManager.FindTargetTag("Player"); GameObject[] players = allplayer.Targets; for (int i = 0; i < players.Length; i++) { if (players[i] != null) { CharacterSystem character = players[i].GetComponent <CharacterSystem>(); if (character != null) { if (character.UserID == userID) { return(players[i]); } } } } return(null); }
GameObject findTarget() { GameObject gettarget = null; float length = float.MaxValue; for (int t = 0; t < TargetTag.Length; t++) { //通过Tags找到所有目标 TargetCollector targetget = UnitZ.aiManager.FindTargetTag(TargetTag[t]); if (targetget != null) { GameObject[] targets = targetget.Targets; if (targets != null && targets.Length > 0) { for (int i = 0; i < targets.Length; i++) { if (targets[i] != null && targets[i].transform.root != this.transform.root) { DamageManager targetdamagemanager = targets[i].GetComponent <DamageManager>(); //如果目标存活,并且具有demagemanager if (targetdamagemanager != null && targetdamagemanager.IsAlive) { float distancetargets = Vector3.Distance(targets[i].gameObject.transform.position, this.gameObject.transform.position); if ((distancetargets <= length && (distancetargets <= DistanceMoveTo || distancetargets <= currentDistanceWeapon))) { //远距离发现目标 if (canSeeTarget(Pointer.transform.position, targets[i].gameObject) || RushMode) { length = distancetargets; gettarget = targets[i].gameObject; } } } } } } } } return(gettarget); }
GameObject findTarget() { GameObject gettarget = null; float length = float.MaxValue; for (int t = 0; t < TargetTag.Length; t++) { // Finding all the targets by Tags. TargetCollector targetget = UnitZ.aiManager.FindTargetTag(TargetTag[t]); if (targetget != null) { GameObject[] targets = targetget.Targets; if (targets != null && targets.Length > 0) { for (int i = 0; i < targets.Length; i++) { if (targets[i] != null && targets[i].transform.root != this.transform.root) { DamageManager targetdamagemanager = targets[i].GetComponent <DamageManager>(); // if target has a damage manager and alive if (targetdamagemanager != null && targetdamagemanager.IsAlive && targetdamagemanager.Team != character.Team || targetdamagemanager.Team == 0) { float distancetargets = Vector3.Distance(targets[i].gameObject.transform.position, this.gameObject.transform.position); if ((distancetargets <= length && (distancetargets <= DistanceMoveTo || distancetargets <= currentDistanceWeapon))) { // get a target only in distance or rush mode enabled if (canSeeTarget(Pointer.transform.position, targets[i].gameObject) || RushMode) { length = distancetargets; gettarget = targets[i].gameObject; } } } } } } } } return(gettarget); }
void Update() { if (!isServer) { return; } if (Parachute) { if (Parachute.activeSelf) { if (rig) { rig.AddForce(Vector3.up * FloatForce); } } } if (!unpackaged) { TargetCollector players = UnitZ.aiManager.FindTargetTag(PlayerTag); if (players != null && players.Targets != null) { for (int p = 0; p < players.Targets.Length; p++) { if (players.Targets[p] != null) { if (Vector3.Distance(this.transform.position, players.Targets[p].transform.position) < DistanceUnpack) { Spawn(); unpackaged = true; } } } } } }
/// <summary> /// Starts search with current settings. /// </summary> /// <param name="showResults">Shows results in the %Maintainer window if true.</param> /// <returns>Array of IssueRecords in case you wish to manually iterate over them and make custom report.</returns> public static IssueRecord[] StartSearch(bool showResults) { if (!ProjectSettings.Issues.lookInScenes && !ProjectSettings.Issues.lookInAssets && !ProjectSettings.Issues.lookInProjectSettings) { MaintainerWindow.ShowNotification("Nowhere to search!"); return(null); } if (ProjectSettings.Issues.lookInScenes) { if (!CSSceneTools.SaveCurrentModifiedScenes(false)) { Debug.Log(Maintainer.LogPrefix + "Issues search canceled by user!"); return(null); } } var issues = new List <IssueRecord>(); PrepareToBatchOperation(); try { var sw = Stopwatch.StartNew(); CSTraverseTools.ClearStats(); var targetAssets = TargetCollector.CollectTargetAssets(); /*foreach (var targetAsset in targetAssets) * { * Debug.Log(targetAsset.Path); * }*/ TargetProcessor.SetIssuesList(issues); TargetProcessor.ProcessTargetAssets(targetAssets); var traverseStats = CSTraverseTools.GetStats(); var checkedAssets = targetAssets.Length; sw.Stop(); if (!operationCanceled) { var result = string.Format(CultureInfo.InvariantCulture, Maintainer.LogPrefix + ModuleName + " found issues: {0}\n" + "Seconds: {1:0.000}; Assets: {2}; Game Objects: {3}; Components: {4}; Properties: {5}", issues.Count, sw.Elapsed.TotalSeconds, checkedAssets, traverseStats.gameObjectsTraversed, traverseStats.componentsTraversed, traverseStats.propertiesTraversed); Debug.Log(result); } else { Debug.Log(Maintainer.LogPrefix + "Search canceled by user!"); } SearchResultsStorage.IssuesSearchResults = issues.ToArray(); if (showResults) { MaintainerWindow.ShowIssues(); } } catch (Exception e) { Debug.LogError(Maintainer.LogPrefix + ModuleName + ": something went wrong :(\n" + e); } EditorUtility.ClearProgressBar(); return(issues.ToArray()); }
public HammerTargetCollectorComponent(TargetCollector targetCollector, TargetValidator targetValidator) : base(targetCollector, targetValidator) { }
void Update() { if (!isServer || (SpawnJustOnce && alreadySpawned)) { return; } bool active = false; if (SpawnByPlayerEnter) { TargetCollector players = UnitZ.aiManager.FindTargetTag(PlayerTag); if (players != null && players.Targets != null) { for (int p = 0; p < players.Targets.Length; p++) { if (players.Targets[p] != null) { if (Vector3.Distance(this.transform.position, players.Targets[p].transform.position) < this.transform.localScale.x) { active = true; } } } } } else { active = true; } if (!active) { return; } if (SpawnJustOnce) { if (!alreadySpawned) { alreadySpawned = true; int itemcount = Random.Range(1, ItemMax + 1); for (int i = 0; i < itemcount; i++) { Spawn(); } } } else { ObjectExistCheck(); if (ObjectsNumber >= ItemMax) { full = true; } else { if (full) { timeTemp = Time.time; full = false; } if (Time.time > timeTemp + timeSpawn) { Spawn(); timeTemp = Time.time; } } } }
void Update() { if (character == null) { return; } // random play an idle sound. if (Time.time > soundTime + soundTimeDuration) { character.PlayIdleSound(); soundTimeDuration = Random.Range(0, IdleSoundDelay); soundTime = Time.time; } if (isServer && character.IsAlive) { float fps = (1 / Time.deltaTime); float delay = (fps / AIUpdateRate) * Time.deltaTime; // calculate delay of sending if (Time.time > timeTmp + delay) { // sending by time timeTmp = Time.time; character.isServerControl = true; // get attack distance from primary weapon. DistanceAttack = character.PrimaryWeaponDistance; float distance = Vector3.Distance(PositionTarget, this.gameObject.transform.position); targetDirectiom = (PositionTarget - this.transform.position); Quaternion targetRotation = this.transform.rotation; float str = TurnSpeed * Time.time; // rotation to look at a target if (targetDirectiom != Vector3.zero) { targetRotation = Quaternion.LookRotation(targetDirectiom); targetRotation.x = 0; targetRotation.z = 0; transform.rotation = Quaternion.Lerp(transform.rotation, targetRotation, str); } // if Target is exist if (ObjectTarget != null) { DamageManager targetdamagemanager = ObjectTarget.GetComponent <DamageManager>(); PositionTarget = ObjectTarget.transform.position; if (aiTime <= 0) { aiState = Random.Range(0, 4); aiTime = Random.Range(10, 100); } else { aiTime--; } // attack in distance. if (distance <= DistanceAttack) { if (aiState == 0 || BrutalMode) { Attack(targetDirectiom); } } else { if (distance <= DistanceMoveTo) { // rotation facing to a target. transform.rotation = Quaternion.Lerp(transform.rotation, targetRotation, str); } else { // if target is out of distance ObjectTarget = null; if (aiState == 0) { aiState = 1; aiTime = Random.Range(10, 500); PositionTarget = positionTemp + new Vector3(Random.Range(-PatrolRange, PatrolRange), 0, Random.Range(-PatrolRange, PatrolRange)); } } } if (targetdamagemanager && !targetdamagemanager.IsAlive) { ObjectTarget = null; } } else { float length = float.MaxValue; for (int t = 0; t < TargetTag.Length; t++) { // Finding all the targets by Tags. TargetCollector targetget = UnitZ.aiManager.FindTargetTag(TargetTag[t]); if (targetget != null) { GameObject[] targets = targetget.Targets; if (targets != null && targets.Length > 0) { for (int i = 0; i < targets.Length; i++) { DamageManager targetdamagemanager = targets[i].GetComponent <DamageManager>(); if (targetdamagemanager != null && targetdamagemanager.IsAlive) { float distancetargets = Vector3.Distance(targets[i].gameObject.transform.position, this.gameObject.transform.position); if ((distancetargets <= length && (distancetargets <= DistanceMoveTo || distancetargets <= DistanceAttack || RushMode)) && ObjectTarget != targets[i].gameObject) { length = distancetargets; ObjectTarget = targets[i].gameObject; } } } } } } if (aiState == 0) { // AI state == 0 mean AI is free, so moving to anywhere aiState = 1; aiTime = Random.Range(10, 200); PositionTarget = positionTemp + new Vector3(Random.Range(-PatrolRange, PatrolRange), 0, Random.Range(-PatrolRange, PatrolRange)); } if (aiTime <= 0) { // random AI state aiState = Random.Range(0, 4); aiTime = Random.Range(10, 200); } else { aiTime--; } } } if (navAgent) { navAgent.SetDestination(PositionTarget); navAgent.speed = character.GetCurrentMoveSpeed(); } } }