The notes in this section are extremely important. We suggest you read it all, especially if you’re having issues right after downloading.
UFPS A.I. IS NOT ATTACKING / TARGETING THE PLAYER: This problem is frequently caused by having a large collider attached to your UFPS Player Prefab. What happens then, is that this large collider blocks the vision of the AI, making it think there is a wall in front of your player. When you notice the AI not targeting the UFPS prefab, please check that your character model is free from large colliders, BOTH at design time AND runtime.
[ERROR] NavMesh Errors: Some people have requested tech support regarding NavMesh errors. Please know that you must follow Unity’s own instructions for NavMesh baking, or else you will receive a ton of NavMesh errors. The NavMesh errors then triggers hundreds of other errors. Sounds familiar? This has nothing to do with our A.I. – this happens to every Unity project/scene that does not have a baked NavMesh. The reason for the errors is because the A.I. needs a “picture” of your scene’s obstacles and routes and if you don’t bake the NavMesh, the A.I. will have no idea of where to go. You have to bake the scene’s navigation mesh before playing and each time you change the environment. Bots will not function properly inside a scene without a properly baked nav mesh.
[CORRUPT FILES] For strange reasons, sometimes the files you downloaded from the Asset Store become corrupted, the download is smaller than it should be, will not open correctly in Unity, etc… This can happen if your firewall was turned on or you were using a proxy when you downloaded from the Asset Store. Try downloading again with proxies/firewalls turned off. If you still have issues, email us with your Unity Receipt Number and we can email you a package.
[CORRUPT FILES] FSM Errors: Sometimes the FSM’s were all removed from the bots after downloading. This results in you having to add the FSM script to each bot. We’re not sure why this happens on some downloads, but after hearing about similar things from users of other PlayMaker kits, it seems that this happens sometimes when you update PlayMaker. After the update, Unity apparently no longer recognizes the unique FSM scripts attached to prefabs and you have to manually add FSM to each. Try starting a blank new project, install PlayMaker FIRST (latest update), then import our asset.
PLAYMAKER ACTION ERRORS: Some older PlayMaker actions are not compatible with Unity 5. If you’re using PlayMaker 1.8, you should have no issue with this. If not, you will need to remove the AddComponent and AddScript actions.
Also, make sure you have the latest version of PlayMaker installed. This was built on PlayMaker 1.7.
[UNITY 5] BOT IS NOT MOVING AFTER PATH FOUND: Unity 5’s NavMesh Agent now requires you to declare Agent.Resume to set the bot on a new course. We have already done this in our prepared bot prefabs, but if you are venturing on your own, you will need to add the NavMesh Agent Resume action to your FSMs. More information can be found on the Unity 5 website regarding the new API.
NAV MESH IS BAKED BUT BOT IS STILL NOT MOVING: Check your bot’s settings:
1) The bot’s Movement and Awareness FSMs are not disabled
2) Walk speed and Run Speed [Movement FSM]
3) Random walk speed and random run speed [RandomizeStats FSM]
4) Your bot has a NavMesh Agent component
5) Bot’s sight range and hearing range [Awareness FSM]
6) Check your bot’s current command [Tactics FSM]. A bot under GUARD mode will not move unless he spots an enemy.
7) If using waypoints, check that your waypoint nodes are placed above ground, and at a reachable location on the nav mesh.
BOT NOT MOVING IN DIRECTION I DIRECTED: Check the following settings:
1) charROLE_RunAwayWhenLowHP [HealthAndDamage FSM] – your bot is probably low on health and running away. If that happens, your bot will disengage all other orders. Turn this off by setting it to FALSE.
2) TACTICS_PatrolChase [Tactics FSM] – If set to true, your bot will deviate off course from his current path to chase a nearby enemy. Set this to false if you want to force your bot to follow a set path, regardless of nearby enemies (your bot will continue to shoot at the enemy though).
3) Check your waypoint nodes and check their positions
BOT NOT TARGETING THE PLAYER / ENEMIES:
If an enemy is both inside your bot’s sight range and attack range, but not attacking, check the following:
1) Your ranges are not negative, are not 0, and not unreasonable.
2) Your bot is behind a wall or another object (Teammate) and do not have the enemy in his line of sight, even though they are within range.
3) charSTAT_EnemyTag [Awareness FSM] – this accounts for the majority of issues with a non-attacking bot. Often, developers forget to set the correct enemy team tag. Also, a bot’s enemy tag cannot be the same as its own tag.
4) Check your bullet prefab – it must have a rigidbody and the bullet component FSM. A working example is the provided demo bullet prefabs.
5) Your bot isn’t giving the bullet enough Force
AI CHARACTER IS “SLIDING AROUND” EVEN ON IDLE / STOPPED: This can happen for some reasons:
1) The Unity NavMesh Agent’s acceleration setting. This makes an agent slowly move towards its maximum speed, using its acceleration speed, giving the impression that it’s “sliding around slowly.”
2) Mechanim Animator setting: This usually is a “transition” setting with the Animator. Between the Idle <-> Walk and Idle <-> Run transitions, there is an “Exit Time” setting. Set this to 0. Otherwise, the Mechanim Animator system will blend the animations between Walk and Idle and will use a small amount of time to do that. The problem is, our AI character has already stopped (speed set to 0), but it takes a short time (miliseconds) for the Animator to crossfade the Walk and Idle animations. The best way to remove the unwanted “slide” effect is to set Exit Time to 0. (See Unity documentation for further info).
BOT NOT DISAPPEARING AFTER BEING KILLED: Our default bot setup has the bot remaining on the battlefield as a corpse for 30 seconds. You can have the bot be immediately removed by setting the wait period to 1 second like this: