FULL 3D ENEMY AI in 6 MINUTES! || Unity Tutorial
Вставка
- Опубліковано 20 сер 2024
- FULL 3D ENEMY AI in 6 MINUTES! || Unity Tutorial:
Today I made a quick tutorial about Enemy Ai in Unity, if you have any questions just write a comment, I'll try to answer as many as I can :D
Also, don't forget to subscribe and like if you enjoyed the video! :D
See you next time.
Links:
➤ NavMesh Components: github.com/Uni...
➤ DOWNLOAD the SCRIPT: www.mediafire....
➤ DOWNLOAD the PROJECT (in the free-code-dave channel): / discord
➤ DON'T CLICK: bit.ly/2VcrDZt
If you want here's the series about the GUN SYSTEM USED in the video:
➤ • SHOOTING with BULLETS ...
🏹 Get Access to my RANGED COMBAT LAB! 🏹
➤ Trailer: • RANGED COMBAT LAB - Un...
➡️ Get Access to my full MOVEMENT LAB! ➡️
➤ Trailer: • MOVEMENT LAB - Unity P...
Other interesting videos :D
➤ Full WALL RUN tutorial: • Full WALL RUN TUTORIAL...
➤ My FIRST YEAR of game development: • My FIRST YEAR of UNITY...
Support me on Patreon:
➤ / davegamedevelopment
Music used:
➤ Elevate - LiQWYD: • Elevate - LiQWYD (No C...
➤ Night Out - LiQWYD: • Night Out - LiQWYD (No...
#UnityTutorial #EnemyAi #UnityEnemyAi
I was almost in tears listening to your voice because Brackeys has taken a break from youtube
😢😢😢😢😭😭😭😭
No he's done for good :'(
same buddy :(
"Good-bye and thanks for everything" doesn't sound remotely like a break tbh.
i was in tears listening to his voice for entirely different reasons..... :((((((
@@monkeyrobotsinc.9875 i guess feeling overwhelmed with how complicated coding seems? for me that was it
whoever followed through this tutorial without pausing the video once is a god
No joke, especially when this is my first time hearing his voice (not that it's bad at all just it wasn't anticipated)
...And I came back. For some foolish reason I thought I could follow through at 0.25 speed and You. Were. Not. Joking.
yeah, either this guy sped the video up so he could make the title "AI in 6 minutes" or he's just that fast, that's crazy.
@@P4rz1va1 it says 6 mins but it took me an hour to follow along, was a painful experience.
I paused every 5 seconds
The idea is to watch the video without doing anything, and then after watching it, try to do it yourself. Then it is possible.
I feel like this guy might be our Brackeys from now on
But not for beginners
@MissYouBrackeys
spam this line
never >:(
@@KingTubeAR programmer moment
"in 6 minutes" ... *does tutorial in hyper speed*
Jup kinda hard to understand though like 10 minutes would have bbeen great
Kinda the point tho
Slow the speed of video
Its easier for people who need it slower, to pause after he says something, than it is for people who need it faster, to try to jump ahead through long silences, or useless chatter.
@@Nebulaoblivion my point being that if I make a video saying "make something in 6 minutes" but really I've just cut everything together in 6 minutes of video but the actual process takes hours and I also have to rewatch that 6 minute video 10 times to try and catch things due to you flying through it. Then the title is a lie, it has nothing to do with the pacing of the tutorial and everything to do with the claims of the title.
Best Tutorial for Enemy AI on UA-cam
Thanks a lot! :D
agree
definetly
Bruh 6 minutes......im new to C# and I understood that perfectly, you're a fucking beauty
Haha thanks! :D
iam new too but i dont understand anything as alwyas :D but Daves tutorials are great :DD
it was so fast I had couldn't type anything of my own or Dave's code without having to pause or slow down to 0.5, and I type at god speed...
@@davegamedevelopment Hi sir please help me, actually i don not know how to downloaded the project from discord server. So I requested to you kindly tell me how to downloaded it🙏🙏🙏
@@Your_Sourav. same
This tutorial is definitely one of the bests. The only thing I would probably add is the idling function. That way the enemy would stop for a sec or two instead of constantly running around
Can u tell me how to implement that ?
@@MrNPCTHE THIRD CODE
if (Time.time < lastDidSomething + pausetime) return;
HAS A ERROR SMALL T IN WORD PAUSETIME. THE CORRECT ONE IS
if (Time.time < lastDidSomething + pauseTime) return;
JUST IN CASE SOMEONE WANT TO USE IT AND IS NOT WORKING,
How does one get the nav mesh agent
@@justgix7165 You go to your Packet Manager under 'Window' at the top. Then you select 'Unity Registry' insted of 'In Project' or 'My Assets' and search for the Nav Mesh Package. And then you install it.
Amazing tutorial, thank you!!
Adding in notes on snags I hit for future reference:
How To Add/Set Layer Masks:
(1) Click on your game object, in inspector on the upper right is the Layer dropdown. Add twhatIsGround/Enemy/etc as new layers and set accordingly
Enemies Not Moving:
(1) Make sure your ground and player objects have colliders
Projectile Problem:
(1) Make sure your projectile has a Rigidbody component added
Adding NavMesh Components:
(1) You can now add them directly via Unity's Package Manager. Go to Window -> Package Manager -> Packages -> AI Navigation and install that
Thanks!
To anyone having the player enemy fall or disappear... Make the empty Game Object that you put the Nav Mesh Surface on not a child object of your enemy. This worked for me, Best of luck!!!
Thanks man. I’ve had so much trouble trying to figure that out
thanks! this really helped!
Thank you so much!!!!!
so do we make it a parent>?
This tutorial is amazing even if am not using unity, really opened up one thing i overlooked separating chase range and attack range .thanks for the breakdown of the base of ai before expanding how smart it behaves .just subbed
This is how most of tutorials should be! I love everything about it. Directly to the point and explaining just what is needed. Awesome job and Thank you!
What about the fact he go faster den SANIC.
Slow the speed of the video
yeah if "just what is needed" is "nothing at all"
If you followed this tutorial and your Player is not recognised by the enemy so it never goes toward the player, it might be because your player doesn't have a collider. So, add a capsule collider or something like that to your player it could fix it. I've been struggling with that the past 15 min 😁
thank you for the tip it realy helps👍
I found it was because my player wasn't named "playerobj"
so I went to the script and changed it to the name of the player
@@rprivateaccount5167 me too
well what if he just goes up to the sky
I don't understand only one thing.... HOW ARE YOU SO GOOD?!
Haha thanks, but I'm not that good :D You can learn that too, just keep watching tutorials :D
@@davegamedevelopment i learned c# now
@@gaminganimator-qp2ir Nice
@@davegamedevelopment but gotta learn more:)
Same
If anyone is having trouble with the baking section you just have to set the areas you want to bake to static in the inspector.
thank you brotha was being so confused to what I was doing and y it wasn't baking lol ty tyty
hey!
can u tell what is projectile 4 and how to attach it???
@@partishdarji26 Hopefully this is not too late. The "Projectile 4" is whatever you want the enemy to instantiate. In the video, it was made into a prefab named Projectile 4.
@@aokutor well thx for ur reply but i already got it!
Mans types so fast visual studio can’t keep up
Absolutely fantastic tutorial video! I found it absolutely invaluable as a starting point for creating my first Enemy AI. And I expanded it by adding behavior for patrol paths/waypoints, as well as definable 'Idle time' between WalkPoints, combined with a bool option to randomize idle time as well. :)
Hey just wondering how did you make that Idle time between walkpoints? I’m using a slime that jumps around randomly but also stops at times so i would like to have an idle function for it.
@@KoopaD.WaterTroopa Simple really. I create a standard timer variable ie: "Timer -= Time.deltaTime;", that runs in the Patroling function, under "if (distanceToWalkPoint.magnitude < 1f)" Then once the timer has hit zero, I allow "walkPointSet = false" to execute, triggering the AI to find a new walkpoint again. And to finish off I reset the timer when it executes FindWalkPoint();. You can either set the timer variable as a fixed value, or you can call the Random.Range(); function for more unpredictable behavior. I hope that made some sense. :)
Yooo, just wondering how you made the waypoints / patrol paths to work with the code. Beginner coder here bahaha
This channel is so underrated
Thanks! Glad you like the videos! :D
@@davegamedevelopment brakeys 2.0
Damn right to the point. Very nice tutorial. You didn't waste a moment. Thx for this tutorial.
Glad you liked it! :D Thanks for watching
did it work for you? if so I need help. my enemy just stands there and does nothing I have no errors. pls help
Nice script for enemy AI to completely kill all your hope for any tiny bit of performance as soon as your number of enemies is above 10. Good job
had a little trouble with figuring out layers but got it working after a little more research :) Thanks dude!
Im having trouble with the layers showing what did you do?
@@mregghead9521 Same here bro, did you find any solutions?
@@mregghead9521 any of you got it working?
plz help
This tutorial really helped! Thanks! I am working on FPS AI and a can't tell you how much this helped! Thumbs up!
Glad I could help!
@@davegamedevelopment Hi sir please help me, actually i don not know how to downloaded the project from discord server. So I requested to you kindly tell me how to downloaded it
I have a weird, but small issue. When the enemy is attacking, the bullet spawns but it won't turn with the enemy. So it begins firing when I enter the attack range, but it's never facing me and never updates to my current position.
i have same. how did you fix this?
@@micol04 Never did.
I just did
I added spawn point to a code I have and called in before transform.position .. instead of transform.position
I used
(spawnPoint.transform.Position)
It spawns from wherever you put the spawn point game object irregardless of where it turns
Use quaternion also instead of rotation
I look away for one second and it's already the next video.
Great tutorials btw.
Haha thanks :D
I love your video style and clear code. Subscribed!
Thanks a lot!
Dave if you continue creating videos like this one you will be the next Brackeys on UA-cam or even bigger, congratulations and thanks for this amazing content. 👍
His voice is definitely Brackeys
Awesome tutorial! This worked out amazing in my game.
Glad to hear that!
THIS IS AMAZING! Don't stop making these tutorials.
Thanks a lot! And well... I did stop :D
But from now on I'll be uploading regularly again!
I did everything like the tutorial but when i try to play the ai go to space any solutions?
Your channel looks very very good, your voice reminds me brackeys too hahaha
Haha, thanks a lot! :D
@@davegamedevelopment wait are u .................................
@@gaminganimator-qp2ir no, his voice seems a bit too deep as well as the fact that brackeys was well serious about leaving UA-cam.
There no navmeshagent for me and it is driving me insane
I think you have to install it in the package manager.
Yeh it is not in package management for me
ur really amazing iam
really looking forward for ur next tutorials !!
Thanks, appreciate it!
for anyone whos enemy is falling thru the floor, click window, ai, navigation, and then select the floor and anything else u want the enemy to walk on, then click bake and it should work
how to select the floor???
@@time133 click it? im not sure what you mean
@@time133 after you click navigation, you should be able to select the floor and then it will appear on the right, and then you click bake
My enemy is going down the ground when I go close to him, I tried playing with navigation settings, adding collider, adding rigidbody and non of these worked, any solution please? Also I have no console errors.
@@potato1947 same 😭
dude don't stop making videos you have some amazing content that A LOT of people can learn from
dude u r awesome
i was looking for this for a couple of days
thank u so much ♥
There are a few changes I made to this. The AI needs to make sure that the path is complete before chasing or attacking the player. Otherwise, it will walk and float across gaps, walk through walls, and attack through walls. For enemies that shoot projectiles, I made them raycast towards the player to see if the player is within their line of sight, and if they don't see the player, they move closer until they can actually hit the player with the projectile. Otherwise, they get stuck trying to shoot a player from behind a wall.
The “Nav Mesh Surface” script doesn’t appear the same way yours appears. Any way to fix?
write your own script based on the logic of enemies. I don't see any other solution🥲
Did you install the package?
How do you download the nav mesh
Maybe you know it already but it's ai navigation in the package manager.
I don't know if you still read these but thank you!! this helped me so much. it was straight the point no chitter chatter. Greate video.
So I’ve been creating a game and this was really helpful. Though I am making a horror game. But still was helpful! Thanks!
There is no Bake Button.. I cant bake
btw u should do it like this:
make it so if the enemy sees you with their own eyes with raycast and that they are in range of the sight, this would be infinitely more realistic.
Yea thats what I need to be honest
tysm with a bit of tweaking this worked really good
Super helpful, man. Thanks!
This is Brackeys Channel. I think He is doing Side Business from this channel.... hahaha . Exact As Brackeys
I altered this to make an enemy that walks between its start point and a given point, after chasing and losing sight of you it returns to its start point.
Please, would you mind to share how you did it? TY in advance
This boi is helping me so much. You are amazing
Player is'nt attacking and movin. Test everything not working. Any help will be appreciated
This was excellent. Clean, simple and concise explanation of how to use Unity's NavMeshAgent system. I've already got a 3D model of this demon-lord looking creature with movement and animation controls programmed, even did the IK adjustments to keep his feet perfectly on the terrain. Now I need to implement AI agents to control enemies and this showed me how to get that working. Gonna start with one simple ranged attack spell then hook up the whole game system for spells and weapons to AI agents based on what attacks they're able to use. 😄
Sounds like a Great game in development
@@innerbladet was more of a game prototype I was making migrating from DirectX to Unity and learning how things worked in Unity. I ended up getting hired by a company a couple months later to do this stuff in a commercial game. Unity is really easy if you've ever worked with OpenGL or DirectX and built small engines to power your own games. 80% of the hard work is done for you already and you only have to create the game. 🙂
@@GameDevNerd thx for the tips and hope everything goes good for you
do you know how to get nav mesh
This is great! Straight to the point. I have a request please
Thanks for the idea, maybe I'll do that somewhen :D
But with a bit of tweaking, you could split the attack state into "attack", "defense" and "approach". You only need to come up with some sort of logic when the enemy should do what :D
@@davegamedevelopment my main problem is how to make the ai strafe around, or move nearby the player, instead of just staying immobile infront of him.
@@iggythemad8701 For strafing just add transform.LookAt(player.transform) and move the enemy to the "transform.right" direction. By always looking at the player and walking right the enemy should walk in circles around the player :D
@@davegamedevelopment why didnt I think of this... i thought i had to use the navmesh or something
@@iggythemad8701 No problem, I think you should be able to use NavMeshAgents combined with other movements, just make sure to use the agent.ClearPath() function, otherwise the navMesh agent is constantly trying to get to the player :D
bro said 6 minutes now i have to watch a series
I'm really happy to find your channel with all-new, simple, and specific videos, and I hope to find Oculus VR Rift tutorials as well, subscribe.
Hey, it shows me an error at line 31: Object Reference not set to an Instance of an object? and my ai doesnt move, how do i fix those things?
have you made sure to reference the object its missing in the editor? If you want you can msg me on discord for more help. Fezza#4066
I have 2 issues. One the enemy doesn't patrol it just kinda stands there. the walkpoint keeps changing but the enemy doesn't move. Also when the enemy reaches a certain point it just stops and refuses to move. Any help would be great.
happens same to me
This reply is for new watchers. Add This so it doesn't happens to you. " if (Physics.Raycast(walkPoint, -transform.up, 2f, whatIsGround))
walkPointSet = true;" In this view " 2f" is missing.
@@manishshrestha4263 what should i do?
@Chocolade YT It is posible your ground is not on the "WhatIsGround" Layer
For anyone has their AIs not patrolling, assigning the value walkPointRange will fix this problem
hi, when i use this script it works fine but my game becomes choppy / laggy. any help on how to fix this ?
Thankyou , this script acts as a nice base to build upon more complex behaviours.
Glad I could help! :D
This is a brilliant tutorial, but I'm stuck on the layer masking. I've never done it before, how do I go about creating them properly?
Click on your enemy object, select the Layermask dropdown in the top right of the inspector (It should say "Default" there), then make a new Layermask called "whatIsEnemy" and make sure to select it instead of "Default" (on all your enemies) :D
@@davegamedevelopment Worked a treat, thanks!
I am confused about this as well!
I can't find the layermask
help my ai IS FLYING AWAY
Nice!
I spent a long time doing the detection, I wanted it to be like if the player is out of sight the enemy will move to where he was last seen, it took a long time because it was the raycasts being dumb, *nice tutorial tho*
Very usefull tutorial! I've already used it to program some turrets to fire at me and a ground enemy to chase and attack me!
Thanks, glad I could help!
so ur saying i could of just downloaded the script😐
it doesnt work for me the enemy just flies into space like it has reversed gravity
same mine was glitched off the map and starts crazy flying
help
Thank you, even helped out in the discord.
this is really cool man , thank you very much
Glad you like it!
Thank You, This really helped me learn more about NavMeshAgents. I modified the code and used it to make an AI for my Game.
Glad I could help!
The voice is the same with Brackeys?
Haha no, only sounds similar :D
Dave the enemy's aren't shooting with me how do i fix this aside that a great tuturial
Sorry, I have no knowledge on this, what you can try is re-watching the tutorial to check for errors or try a new tutorial.
probably because your player tag is not the same as in the script
Best youtube on Game Dev hands down. Especially now that Brackeys gone, you will grow even more
such clean and organised codes , totally awsm tut
hmm... the NavMeshSurface doesn't have the baking options or most of the others you have /: pls help
Did you import the nav mesh components correctly? :D
@@davegamedevelopment how do you import the nav mesh components correctly?
Make sure your GameObject is set to Static. Your NavMesh surface should be static to bake.
followed this exactly and when i tried to play it he plummeted the earth at 350 mile per hour
Edit: found the problem and it was how close he was to the ground just get him closer to the ground and it should work
Great tutorial man, it’s a big help cause I’m very new to enemy ai
Amazing tutorial, but I was wondering how could a speed variable be implemented in the ChasePlayer function, so that different enemies may have different speeds
You can change the speed in the navmeshagent settings
if im right, you could do something like this: first make int ,string,scriptable object or anything that you could choose depending what "type of enemy you want". then do something like this
public int enemyType;
void Update(){
if(enemyType==1)agent.speed=1f;
if(enemyType==2)agent.speed=2f;
if(enemyType==3)agent.speed=3f;
}
then make prefab for enemy type 1,2 and 3(remember to change enemytype from the prefab )
thats how you could make the ai have stamina and start walking when stamina is low, hope that you understand what i mean with that
I wish my enemy to be blind , as in follow certain sound triggered by the player ? How to achieve that?
Just make the sight and attack range really small. Then you need some kind of manager to check if the sound was in range, if so increase the sight and attack range :D
Well this is exactly what I was looking for, thanks a lot!
Glad I could help!
The enemy ai script automatic turns off ... Why???
@@bakedpizza4037 Because the name of the player
The only thing I can say about this video is you've got a new subscriber :)
This is exactly the kind of tutorial i need. And is the exact solution i was looking for. Thank you so much!
Not sure what I am doing wrong, I downloaded your code and named layers to WhatIsEnemy, WhatIsGround etc. yet the layer masks are not working. I only have a ground to mask with right now so I gave it WhatIsGround and baked it. I have all the imports right in the Nav Mesh Agent yet the object is still falling through the ground. Originally the enemy was floating on the y axis, but now it is just falling through the ground.
were you able to figure out why this was happening
I can't find the Nav Mesh AGent? can anyone help me
Agent Link Mover is what it called now, idk why
When i start the game, the npc is just standing, no patrolling, no chasing and no attacking. how can i fix it? i followed along the instructions
THere is a Error: "Failed to create Agent because There is No valid NavMesh"
Did you download the nav mesh components from the description and set it up correctly? :D
Thanks for the tutorial but I have one question. When the enemy comes in sight it flies towards me and I keep getting this error: "SetDestination" can only be called on an active agent that has been placed on NavMesh.
Make sure you select navigation and bake
remember you need to creat a new empty GameObject and then add the component NavMeshSurface. In the NavMeshSuface, you have to bake your terrain or ground data.
I literally just straight up assumed you ripped one of Brackey's videos I was so confident that was his voice! It's funny how two game development people on youtube sound so similar lol, thank you for the video!
This was fantastic for my game!
Great tutorial, but one big thing is missing.
Sometimes the random walkpoint is set in a wall or some obstacle and the "AI-Object" doesn't move and is stuck....
Same it doesnt move when i do it!
@@001Camera Hey Set the roads sidewalks or any ground area to the Layer Ground don't set the walls and other objects like building or mountains to Layer Ground
I have a Question what do you but by the projictile slot
My own projectile prefab :D I showed how to remake it in the second part of the "Shooting with Bullets" series :D
my enemy keeps shaking like it's drunk, and when i shoot it with a force, it goes back to the place it was before and continues to be drunk. what in the world is happening
Thanks this is perfect exactly what I needed
Hey, so I'm completely new to coding and unity in general, and I'm having issues with my enemy falling through the map extremely quickly, and it says the walk point is what I'm assuming is the position of the entity. Any idea why?
Do you have an active rigid body on the enemy? Because if it’s just falling through then maybe the collision is off
Same I’ve been fiddling with it for a while now and it just keeps happening, not sure how to fix it.
Did you add the navmeshsurface to your ground? I added the navmeshsurface to the wrong thing, and when I applied it to my ground it stopped falling.
would be cool if you showed us what the scripts you included did and what they are used for. Sounds like you had somewhere to be right after this video with how fast you were going and how little you explained 5/10 tutorial
I really like this because it's the only Tutorial I have found where ai patrols without multiple patrol points
Glad I could help!
Now I understand the difference between blueprints and c#.
Haha :D
Hello Dave, great video! I followed this tutorial for a game where a monster chases a first person player. Everything works great except the patrolling. I can see it setting new walk points in the inspector, but the monster does not go to them. Any idea how to fix this? Thanks!
Same here!! Did you find any solution?
hey just wondering if you found the solution, i am having the same problem.
Its most likely because the walkpoint is being set at a point that is unreachable. You should set a timer for the walkpoint instead of the walkpoint changing when one was reached
You must set the walkPointRange value so that the variables randomX and randomZ work properly
Now I've downloaded the zip file but how I get those godes in the unity editor?
drag and drop into the assets folder... at least thats what i did
@@not_herobrine3752 It didn't work whit me
@@ScratchTuto are you sure you have downloaded the right version of the zip file? like the latest version for unity 2020 and so on?
@@not_herobrine3752 idk I dosen't need it any more but thx for the help
@@not_herobrine3752 then what do I do?
Look into coroutines instead of invoking. Gives so much more flexibility and invoking is also more expensive. Amazing tutorials as always.
Please bro continue to post videos you are great and we miss you!,ps your website is amazing!
my enemy randomly sinks through the map
edit: what i mean is that the Y value is going crazy - it will move a bit to the left, then shoot downwards in the space of around a millisecond as soon as the game starts, without travelling there. It just instantly warps below the map. I am using terrain that is very mountainous as the ground layer, though. maybe that is the problem? could you help me please?
edit 2: the same thing happens with the exact same ground that you are using.
did you set the " What is Ground“ var right ?
I'm having the same problem, the only thing that is different after changing stuff up(So that he dosen't fall down) is that my enemy won't move a bit ;/
I dont even have that which is annoying, it dosent show the "what is player" or "what is ground"@@lordzockt1853
Why is the discord link so difficult to find on the discord website??????????
What a useless place to send people.
Sorry for the problems, discord is basically where the whole community gathers, that's why I send you there :D
And the link is in the description :D
My player isn't being recognised by the AI. And the layer masks aren't detected, can anyone help me out?
thanks a lot Dave! I subbed :D