Roughly It has following Characteristics:
You can make your own custom transition then you need to update the state csharp script files according to your logic.
I have dropped this feature.
This is a complete Unity Project with included depending assets and also included a Demo Scene.
If You download this project and open it with Unity then it may works perfectly but sometimes may not works the way because of layers absence in the project then you need to add corresponding layers and set by the below instruction.
If you use this project with your old project then first put '_Zombie_ai_Fsm' folder in your project then create and add the layers in your project by below instruction.
Zombie NPC is a navmesh agent which detect player by using vision sensor and sound sensor.Vison Sensor have a sensory memory to memorize sense which can be set by config scriptable object.
vison sensor can sense Character layers which is attached to the player prefab.
The NPC Zombie have different inter related states you can manage those states by set up in config scriptable object found in the project.
Add following layers in the following orders
[x] Layer 3 - Player
[x] Layer 14 - Mini Map
NPC : Change Default layer of Zombie/Romero Prefab into NPC, and also
Change Tag of Zombie/Romero Prefab into NPC.
Change Layer of Player into Character which will be seen by NPCs, and also
Change Tag of Player with "Player".
Change Layer of all prefabs indicator plane into "Mini Map" Layer.Which will be seen only by Mini Map Camera.
See NPCVisionSensor Script which attached with npcs i.e. zombie/Romero prefabs and change its Occulation Layer with corresponding
Ground Layer i.e. if ground plain be Defult then change into Defult Layer.
See NPCVisionSensor.cs Script which attached with npcs i.e. zombie/Romero prefabs and change its Target Layer into Character Layer which is the Layer of Player.So NPCs can see the player by vision sensor.
Bake Navmesh with Humanoid Agent which should be in NavMeshAgent(Which attached to the Zombie Prefab).
Now put zombie prefab and player prefab in your scene.Player has attached a Health script which is damageable by Zombie/Romero.
Zombie also has attached a Health Script which can be damagable by external player which has a weapon which can be used to damage zombies health.
Change or tweak zombie behavior by setting up zombie config scriptable object.
To Change custom sensor detection layer edit 'NPCSensoryMemory.cs' file
If you don't see the npcs then you need to add 'NPC' layer into the culling mask section of FPSCamera which have attached to theplayer prefab
Find "NPCSensoryMemory.cs" Script inside Scripts folder.
* Zombie_Ai
* Assets
- Zombie_ai
- Zombie_NPC
- Scripts
- NPCSensoryMemory.cs
...
public void UpdateSenses(NPCVisionSensor sensor)
{
int targets = sensor.Filter(characters, 'TargetLayer');
//Here put the player layer name in 'TargetLayer'
//Here I have use 'Character' as Player Object Layer is that.
....
}
I have get ideas from Youtuber 'Dev/GameDevelopment's tutorials
Sound Effect from Pixabay
Kiwi coder Behavior Tree by Kiwi Coder.
I have put all the above packages file and folder inside of this project.
Unity 2020.3.15f2 or higher version.
Copyright © baponkar 2024