Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Tactical Shooter AI - Asset Store Pack

Discussion in 'Works In Progress - Archive' started by squared55, Mar 2, 2015.

  1. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    Yep, I always do a lot of debugging and fix a lot of my own issues, but I've learned to post my issues on a support forum right away so that I can get the ball rolling in case I don't find a solution hours or days later. So, while I await a response, I'll be trying to figure it out myself.
     
  2. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    Speaking of getting the ball rolling on issues, I have another issue I'm struggling with. As I'm now creating my own Tactical AI from different models, I can't seem to get mine to work quite correctly. My custom agents are constantly aiming either straight up in the air or straight down at the ground instead of at the player. I made sure the agent was facing in the blue arrow direction when creating and the Eye transform also showed blue arrow facing straight ahead. I verified the avatar mask was essentially the same as the provided SoldierAimMask. So, I'm not sure where I might have gone wrong. As always, I will investigate more myself and if I find anything I'll report back here.

    [EDIT]
    OK, so I analyzed the code and I see that it's the BulletSpawn transform's forward direction that drives this and I had mine messed up. So, I fixed it by fixing my BulletSpawn transform.
     
    Last edited: Nov 9, 2017
  3. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    Glad to hear it's fixed. Adding a check for the timescale in the Update Function of the Navmesh Interface seems to fix it all in one go.

    The Wandering agent may not be getting quite to it's destination for one reason or another. Try increasing the DistToChooseNewWanderPoint value in the baseScript.

    For debugging purposes, adding the following code to the EachFrame() method of the Wander behavior (within the CustomAIBehaviourScript, line ~480), will draw a line at runtime between the agent and their destination.

    Code (CSharp):
    1.         public override void EachFrame()
    2.         {
    3.             Debug.DrawLine(myTransform.position, targetVector);
    4.         }
    The agent may also be drawn by a sound (perhaps a test prefab) which is out of the level bounds. You can check to see if an agent has an InvestigateSound component added to them when they enter this state at runtime.
     
    Last edited: Nov 9, 2017
  4. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    Excellent.

    Great. I'll give that a try tonight.

    Will do. Thanks again.
     
  5. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    @squared55 After more analysis on my agent's that just stand around near walls, I discovered that my first issue was with my nav mesh. I needed to get that in better shape for better navigation. Fixing this helped a lot. However, in looking at the code, it appears there is a flaw that can be addressed. In the AICycle there doesn't seem to be any way for an AI to abort a target destination if he can't reach it for whatever reason. So, it's possible for it to be stuck forever trying to reach a destination and never get out of it. I will fix this myself by having some sort of abort time and allowing the AI to choose a new destination, but you might want to do something similar in a future version.
     
  6. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    The idea was that this should never happen. The "actual" destination is the end of the navmesh path, not the random location in 3D space that the above code draws a line to. So, the agent will get close to the edge of the navmesh, and then pick a new destination. You can test this by just creating two scenes with two planes separated by a small gap and placing the agent at the edge. The agent should get close to the gap, and then turn around even if the wander goal is still some distance away.

    However, adding an optional timeout variable won't really hurt anything. :)
     
  7. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    True. I suppose if I can ever get my map perfect then there would never be an issue, but I'm guessing my map is never going to be perfect. lol. I bought an asset and am building it up from there so I expect there may be hidden flaws I will never know about. So, I'm going to put the added protection in there to be safe.

    Thanks for all your patience and support.
     
  8. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    Well, I kinda hope the Wander behavior is the issue because that would be an easy fix!
     
  9. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    OK, well I'll try to look more at that aspect when I get a chance and let you know.
     
  10. Lumos

    Lumos

    Joined:
    Feb 11, 2013
    Posts:
    49
    How do you denote a layer that is "see through, but not shoot-through"? I've got agents trying to shoot each other through solid (but see-through) surfaces.
     
  11. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    You would exclude the layer from the AI Controller's layermask, but keep it for the bullets and explosions.

    Unless you're talking about unbreakable windows that the AI shouldn't fire at at all. In that case, you'd need to modify the code to make the GunScript's LOS layermask variable public so you could edit it in the inspector. Also, disable the line in the GunScript's Awake() which automatically sets the layermask to the AI Controller's.
     
    Last edited: Nov 12, 2017
  12. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    GENERAL ASSET STORE FPS/TPS KIT INTEGRATION GUIDE

    UFPS AND RFPS INTEGRATION INSTRUCTIONS ARE INCLUDED IN THE PACKAGE AND ARE MUCH, MUCH SIMPLER. This is just for other systems which do not have official support.

    Hey everyone. So, recently I made a general Asset Store FPS/TPS kit integration guide for a user and figured I'd post it publicly in case anyone else found it useful. Please note that this is just a general guide and not guaranteed to work with every system. Also, I'm just dealing with the damage system here, not item drops and spawners and the like.

    OVERVIEW

    1) Find the damage receiving method in the other system. Usually in a health or player script.
    2) Find the damage giving code in the other system. Usually in a bullet, gun, or explosion script.
    3) Modify and place the other system's damage giving code in the TSAI damaging scripts (eg: the BulletScript)
    4) Place code that damages TSAI agents in the other system's bullet/explosion/melee scripts.

    I'm also assuming you've attached a target script to your player and modified your layermasks appropriately. Your agents should already be firing at the player, if not damaging them.

    GETTING INFORMATION:

    Onto the code! First, you will need to find the scripts responsible for receiving damage and starting the process of subtracting this damage from the health of the player/agent. In TSAI, this is the HitBox script, but it may be in a health script, or a movement script, or something else in the other package. Once you've identified the script, you'll then need to identify the specific method that is called. This should be easily identifiable by the name. For example, it may be:
    Code (CSharp):
    1. public void ApplyDamage(float damage)
    Next, you will need to find the scripts responsible for dealing damage. For example, in TSAI the BulletScript is responsible for this, but your package may have this functionality built right into the GunScript. There may be multiple scripts for each damage type (explosion, melee, etc). You will need to adjust each one to make it work. Once you've located the script, you'll need to find the line of code which actually applies the damage. An easy way to find this is to do a ctrl-F search for the name of the damage method you found above. In TSAI, all these locations are conveniently marked by the commented out RFPS integration code in the BulletScript, ExplosionScript and TargetScript. Lines 77, 52, and 503 respectively at the time of writing.

    Alright, so by now you should have 2 sets of information:
    -The damage receiving methods
    -The damage giving code and code location(s)

    DAMAGING THE OTHER SYSTEM:

    We'll first get our TSAI agents damaging the other system. I'll only go over the bullets, but the othe scripts should be similar. First you'll need to get the number of arguments in the other package's damage receiving method (this is the number of variables in the brackets).

    SINGLE ARGUMENT DAMAGE METHODS: If the other package's damage receiving method takes only one argument containing the amount of damage to be dealt, you're in luck. Just get the name of the damage method (ie: "ApplyDamage"), type it into the Damage Method Name variable on the TSAI bullet prefabs, and you're probably set.

    MULTIPLE ARGUMENT DAMAGE METHODS: If it has more than just the 1 damage argument, or you want a little extra performance, or the above just didn't work, then you'll need to do the following. Hop on over to script, and go to the spot where you apply damage method. We're going to place our code there. First, we're going to write a new if statement that checks if the target we hit has a damage receiving method attached. Then, inside the if statement, we'll call the method itself. It'll look something along the lines of:
    Code (CSharp):
    1. //BulletScript
    2. if(hit.collider.gameObject.GetComponent<DamageReceiverScriptNameHere>())
    3. {
    4. hit.collider.gameObject.GetComponent<DamageReceiverScriptNameHere().DamageReceiverMethodNameHere(argument1, argument2, argument3);
    5. }
    The actual arguments will vary depending on the package, and you'll need to check for yourself what they are. Unfortunately, I can't tell you exactly what you'll need for your package, so this part's on you. You may want to use default variable like 0 and Vector3.zero for testing purposes. Note that Instead of "hit.collider.gameObject.GetComponent", you'll want to use the following on the other scripts:
    Code (CSharp):
    1. //ExplosionScript
    2. hit.GetComponent<Collider>().gameObject.GetComponent
    3. //TargetScript
    4. healthScriptHolder.GetComponent
    DAMAGING TSAI AGENTS:

    Alright, now all we've got is getting the other system to damage TSAI. It's the same sort of thing as above, except with the scripts reversed- we are now dealing damage to TSAI. Go to the spot in the script where your package deals damage. Then, you'll need to get the code which returns the struck game object. Maybe store the result of that code in a GameObject variable if you find it easier. Once you've done that, then you add a line that calls the appropriate damage method on the TSAI agents.
    Code (CSharp):
    1. GameObject struckObject = hit.collider.gameObject;
    2. struckObject.SendMessage("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);
    changing the "damage" variable to whatever the damage variable is actually called in the script's gun/.bullet/explosion, and you should be good to go!
     
    Last edited: Nov 17, 2017
    Paul-Swanson likes this.
  13. paulojsam

    paulojsam

    Joined:
    Jul 2, 2012
    Posts:
    573
    are you thinking in adapting it also for ultimate survival
     
  14. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    Unfortunately, I currently don't offer official support for Ultimate Survival.
     
  15. zenGarden

    zenGarden

    Joined:
    Mar 30, 2013
    Posts:
    4,538
    Hi @squared55
    Will you plan to add option for AI avoid firing if another AI is between it and player ?
     
    musolo likes this.
  16. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    Next update should have an optional check where the AI will shoot a raycast at the target before firing. If the raycast hits an object with a friendly tag in the way (tag can be customized in the inspector), then the agent won't fire. Of course, it won;t be perfect (such as when an agent moves into the path of a bullet after it is fired), but it should do the job well enough.
     
  17. zenGarden

    zenGarden

    Joined:
    Mar 30, 2013
    Posts:
    4,538
    You don't need that level of precision, just check before firing and during continuous automatic firing if some other character is between AI and player, then stop firing and change position.
     
  18. ImperativeGames

    ImperativeGames

    Joined:
    Dec 11, 2016
    Posts:
    34
    Hello, I bought your asset months ago and was reading this topic and trying to fix all the problems that many other people encountered as well. Your asset is pretty complex, I can't understand and memorize all the code and I always give up at some point. Maybe I'm not the smartest person on the planet, but... And I understand being complex is necessary for customizable and/or realistic behaviour of agents, but...
    Written instructions on how to solve/mitigate common problems could hugely increase value of the package to customers. Please. In the first post (and .pdf with the package)? Pretty please?..
    Stuff like enemies are running toward player and not shooting.

    So. First problem is that on short distances custom model can't rotate upper body properly.

    It looks to the left, while blue debug line is fine.
    If I turn off the RotateToAimGunScript, it looks to the right and he is missing too.
    UseHighQualityAiming makes it worse.
    The bullets are mainly shot at player correctly from bullet spawn transform (please, explain why), but it looks so strange...
    I understand TSAI animation doesn't fit this model properly, but it should rotate nevertheless, right? Until transform of bullet spawn is looking right at TargetObjectTransform of TargetScript.

    Second problem, my PauseMenu sets TimeScale to 0. So, Horizontal and Forwards parameters become NaN's and agent is jogging constantly. I remember you solved it by adding TimeScale != 0 condition to Update method of some script where it recalculates parameters, but can't figure it on my own (RotateAI in AnimationScript doesn't work).

    3rd problem is that when I spawn prefab of agent which wasn't created from this scene I get error ""SetDestination" can only be called on an active agent that has been placed on a NavMesh" and then repeatedly ""GetRemainingDistance" can only be called on an active agent that has been placed on a NavMesh".
    Again, I saw someone asking similar question, but I think you said "Check if it spawns on NavMesh". It is!
    In fact, if I create new prefab from agent on this particular scene, spawning works fine. For me it's magick, please help.
     

    Attached Files:

    • 1.png
      1.png
      File size:
      518.1 KB
      Views:
      828
    Last edited: Dec 7, 2017
  19. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    For your first problem, try moving the bullet spawn back into the gun- you can add a separate muzzle flash spawn at the end of the barrel, so it should still look OK. Also, try disabling Perfromance Mode on the AI controller. You could also try increasing the maxIterations on the RotateToAimGunScript, as well as increasing the Maximum Rotation Angles (try 90 for all), and ensuring that the min distance to aim is 0. If none of that helps, then can you post a screenshot of your agent's RotateToAimGunScript inspector?

    Bullets that are aimed at a low enough angle auto-lock onto the target- just a quality-of-life thing (you can reduce or disable this as well in the gunScript (maxFiringAngle)).

    For the second, easiest fix would be to just make the timescale something along the lines of 0.00000000001 on pause. It will take something like 32 years for the game to process a second of gameplay at that speed. That aside, my earlier modification was placed in the NavmeshInterface script.

    For the third: Is there anything odd about your set-up? Additive level loading? No AI Controller? What about the agents, what inspector values are in the prefabs that work? Can you post screenshots of the both the broken and working agent's inspectors?
     
    Last edited: Dec 7, 2017
  20. GWStudio

    GWStudio

    Joined:
    Sep 27, 2016
    Posts:
    109
    hi .. sorry for late response i was so busy last month .. i changed the behavior to patrol\wander and set the layermask on the AI Controller to include my obstacles .. at the beginning the agent cant see the player but if he saw the player once he always know where the player even if the player is behind walls or obstacle i hope u find a fix .. thank u any way
     
  21. maxaud

    maxaud

    Joined:
    Feb 12, 2016
    Posts:
    177
    Curious if this could be integrated easily with Non first person and non biped characters? Purchased a while back but have yet to try it.
     
  22. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    There are settings in the TargetScript that modify how long an agent will track a target after losing LoS. Don't have Unity in front of me at the moment, but I can check variables for you later.

    There shouldn't be any issues with non first person targets- just look at the demo scene for proof of that! ;)

    There also shouldn't be anything inherently preventing you from using non-humanoid rigs, but keep in mind that it was designed for bipeds, so some forms of locomotion (like flying) might get a bit weird.
     
    GWStudio likes this.
  23. id0

    id0

    Joined:
    Nov 23, 2012
    Posts:
    455
    I have "Target" script on my Player and "Controller" script in each level, and everything fine until player walking aroundl, but when moving to other level all enemies just ignore player. What function I must use to add player in the system again?
     
  24. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    The target script and AI Controller should be it. Hmm. Are you doing anything out of the ordinary when loading a new level? Is your navmesh baked on each map? Are you moving the same player object to each new level, instead of using a new instance of a prefab in each scene (in that case, maybe spawning a empty target in each new level and parenting it to the player could solve your problem)?

    If you put 2 AI's on different teams in the same scene, do they target each other in the cases where they don't target the player?
     
    id0 likes this.
  25. id0

    id0

    Joined:
    Nov 23, 2012
    Posts:
    455
    I load levels additive, and player the same - he's "don't destroy on load". It's all right with navmesh and everthing, enemies fight with each other, but not with player.

    P.S. I try add target on player dynamicly and it's work. The problem is - two, three and more target script exist on player, and if I destroy target script, and then add it - nothing work. Also I have errors, and other problems.

    NullReferenceException: Object reference not set to an instance of an object
    TacticalAI.ControllerScript.GetCurrentTargetsWithIDs (System.Int32[] ids) (at Assets/Tactical Shooter AI/Tactical AI/Csharp/AI Behaviour Scripts/ControllerScript.cs:191)
    TacticalAI.ControllerScript.UpdateAllEnemiesEnemyLists () (at Assets/Tactical Shooter AI/Tactical AI/Csharp/AI Behaviour Scripts/ControllerScript.cs:59)
    TacticalAI.ControllerScript.AddTarget (System.Int32 id, UnityEngine.Transform transformToAdd, TacticalAI.TargetScript script) (at Assets/Tactical Shooter AI/Tactical AI/Csharp/AI Behaviour Scripts/ControllerScript.cs:71)
     
    Last edited: Dec 13, 2017
  26. Pauloxande

    Pauloxande

    Joined:
    Feb 8, 2014
    Posts:
    110
    How do I use the Dissolve Effects on AI
     
  27. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    Try spawning an separate target game object and attaching it to your player when the scene is loaded, destroying the old ones when no longer needed anymore.

    I'm not sure as to which dissolve effects you are referring to, but you can use the public void OnAIDeath() function in your own scripts to run whatever code needed to use your dissolve effect. Just place the script on the AI gameobject and it should be triggered when the agent runs out of health.
     
  28. raizun

    raizun

    Joined:
    Dec 8, 2017
    Posts:
    5
    How should it be done to give damage to Agents by a grenade of UFPS(HeroHDWeapons)?
    If possible, with a picture, please.

    UFPS ver1.7.0
    TSAI 1.8.0
    Unity 5.6.4
     
    Last edited: Dec 19, 2017
  29. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818

    I don't have Unity open in front of me at the moment, but if I remember correctly it should be the exact same for the grenades as the bullets.

    Alternatively, you could try spawning a TSAI explosion in place of a UFPS explosion.
     
  30. Paul-Swanson

    Paul-Swanson

    Joined:
    Jan 22, 2014
    Posts:
    317
    You need to set up your UFPS grenade like normal, then add the TSAI grenade stuff there too. Once you do that it'll work exactly like you expect
     
    Last edited: Dec 20, 2017
  31. raizun

    raizun

    Joined:
    Dec 8, 2017
    Posts:
    5
    It was done like a picture.

    A damage mode was changed, but it isn't possible to give damage.
    What should I do?

    grenade.jpg
     
  32. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    Again, don't have Unity available at the moment, but try checking "Allow Multi Damage."

    Also, I believe Damage Mode should be "Unity Message".
     
  33. Paul-Swanson

    Paul-Swanson

    Joined:
    Jan 22, 2014
    Posts:
    317
    This is how i got my booms to work properly.
    JUst set up your explosions like my screenshot.
    Not the projectile. Just the explosion prefabs
     
  34. raizun

    raizun

    Joined:
    Dec 8, 2017
    Posts:
    5
    It was possible to give damage.
    Thanks!!
     
  35. Paul-Swanson

    Paul-Swanson

    Joined:
    Jan 22, 2014
    Posts:
    317
    I'm glad I was able to help ya. Took a lot of messing to get it working on my project too.
     
  36. musolo

    musolo

    Joined:
    Sep 12, 2014
    Posts:
    238
    Hi squared55
    Still no plans to make technical AI? Remember Tanks, Planes and Choppers?
    Few more questions?
    How do i restrict agent to straight forward only walking, making turn if nessessary and than again straight walk only?
    Allso how do i forbid agent to walk backwards?
    Could yoube be make short video where agents become aware upon fire shot?
    Thanks!
     
    Last edited: Dec 25, 2017
  37. musolo

    musolo

    Joined:
    Sep 12, 2014
    Posts:
    238
    Can they shoot each other with raycast "bullets" and not just projectile? So machine gunners and riflemen would use raycast and not cluttered scene with bullet prefabs causing drammatic batches increase and killing framerate on mobile.
    And projectile type bullets would be used only by snipers.
    Could you help me out o this one?
    Thanks!
     
  38. id0

    id0

    Joined:
    Nov 23, 2012
    Posts:
    455

    I doing so, but no melee work now... well it doesn't matter I'll make it different way.
    I have other question. I'm using new Navigation System, and that's what happen. Please don't tell me turn something script Off or On, I know that causing Animation Script, I just want to know what exactly I need to write in this script to fix this?
     

    Attached Files:

    • NAV.jpg
      NAV.jpg
      File size:
      445.8 KB
      Views:
      783
  39. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    Sorry for the late responses, currently on vacation and so I don't have a lot of time to get on the computer.

    I'll look into adding an option for these.

    Should just be a matter of attaching a SoundMaker script to your bullet prefab, and adjusting the 3 variables (sound range, sound delay, and the teams to make aware) to match your game.

    Under the current system, just make the bullets really, really fast so that they appear and disappear within a single frame. No raycasts with no bullet object at the moment, however.

    Well, I can't say I anticipated having my agents walk up vertical walls. Looks like it could be a cool game mechanic, though. :)

    I'll need to change the code in the animation script, just tweaking variables won't cut it here. I will take a look at this when I get the chance (again, not a lot of time to work at the moment).

    As for the changes themselves, if I had to guess, I'd say changing the "up" axis in the bit of the code that rotates the agent to the floor normal would work (as opposed to World Up), but the constraints that keep the agent from tipping over when aiming at higher targets might work against you here and will probably require additional changes. Again, I'll get back to you on this.

    As for the melee, you will probably have to dynamically assign the HealthScriptHolder as well.
     
    Last edited: Dec 29, 2017
    id0 likes this.
  40. GWStudio

    GWStudio

    Joined:
    Sep 27, 2016
    Posts:
    109
    hi squared55 .. i hope u found these variables
     
  41. paulojsam

    paulojsam

    Joined:
    Jul 2, 2012
    Posts:
    573
    is this compatible with ultimate survival also
     
  42. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    Found'em!

    They're under "Show Target Check Parameters," in the Target Script.

    -Dist To Lose Awareness
    -Time Before Target Expiration
    -Time Between Target Checks If Engaging
    -Time Between Target Checks If Not Engaging

    Time Before Target Expiration is the main one, lower it if you want your agents to lose targets sooner.

    I don't offer official support for Ultimate Survival, no.
     
    GWStudio likes this.
  43. paulojsam

    paulojsam

    Joined:
    Jul 2, 2012
    Posts:
    573
    thank you, i hope its compatible.
     
  44. GWStudio

    GWStudio

    Joined:
    Sep 27, 2016
    Posts:
    109
    thank u its work now ;)
     
  45. Lumos

    Lumos

    Joined:
    Feb 11, 2013
    Posts:
    49
    Hey Squared, me again, back to pester you. Turning an agent's... well, everything, aside from the ragdoll object, that is, then back on again causes the agent to just sit there and do nothing, even when they're being shot at. The best they can manage is to turn and face the attacker, but will not return fire or resume navigation. Any ideas why that is and what might need to be done to resolve it?
     
  46. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    What specifically do you want your agents to do that involves turning them off and on again? And which components are you enabling/disabling?
     
  47. Lumos

    Lumos

    Joined:
    Feb 11, 2013
    Posts:
    49
    I turn the entire agent off (i.e. the soldier prefab) as a part of my custom occlusion culling system. I'm not disabling individual components.

    Furthermore, I've also noticed agents doing a similar thing - just standing there, doing nothing - even if they've not been disabled. When that happens, the affected guy seems to fixate on a target, remain perfectly still, and do nothing whilst a room full of enemies whittles hit down.
     
  48. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,676
    If you are doing occlusion, wouldn't you want to just disable the mesh renderer?
     
  49. Lumos

    Lumos

    Joined:
    Feb 11, 2013
    Posts:
    49
    I'm using a procedurally-generated level with a very large amount of individual renderers, so I sincerely doubt that running tonnes of checks on them would be a good idea. Turning the agents' skinned mesh renders off is an interesting idea – only their guns remain visible.
    For the time being, I ended up not turning them off at all, though I continue to disable entire parts of the level. I thought the agents would fall off the level, but I guess the navmesh is keeping them on, and they continue patrolling and whatnot even if the player is far away (and the agents' rooms have been disabled), which is ideal.

    As for the "petrification" issue, I've reached the conclusion that it's linked to dynamic cover and the "max time in cover" parameters or something along these lines. Reducing those appears to have solved the issue.
     
  50. Ghost_Interactive

    Ghost_Interactive

    Joined:
    Jul 8, 2015
    Posts:
    54
    need a help ! when the ai see player 1st go to a transform point and then attack like normal behaviors.
    // what i want, ai to a trigger point to trigger alarm then engage shooting, how to do this. thank you