FULL 3D ENEMY AI in 6 MINUTES! || Unity Tutorial

Поделиться
HTML-код
  • Опубликовано: 12 дек 2024

Комментарии • 1,9 тыс.

  • @relarin952
    @relarin952 18 дней назад +5

    WARNING to all new watchers:
    Dude explains the tutorial absolutely excellently but kind of drops the ball when it comes to the last minute.
    1. have to assign layers names yourself.
    2. the empty he talks about at 5:00. you need to add the nav mesh surface to the ground.
    3. if your enemy is falling through the world, either your raycast code to check if the enemy is grounded doesn't work or your ground/terrain doesn't correctly have a nav mesh surface.
    Hope this helps, otherwise it's a really good tutorial!

  • @safdaboss8645
    @safdaboss8645 4 года назад +795

    whoever followed through this tutorial without pausing the video once is a god

    • @HandleDisliker
      @HandleDisliker 4 года назад +38

      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.

    • @P4rz1va1
      @P4rz1va1 4 года назад +13

      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.

    • @Shezza_1212
      @Shezza_1212 4 года назад +30

      @@P4rz1va1 it says 6 mins but it took me an hour to follow along, was a painful experience.

    • @soundzythedev
      @soundzythedev 3 года назад +12

      I paused every 5 seconds

    • @FINTHRTD
      @FINTHRTD 3 года назад +10

      The idea is to watch the video without doing anything, and then after watching it, try to do it yourself. Then it is possible.

  • @shreerajkulkarni
    @shreerajkulkarni 4 года назад +509

    I was almost in tears listening to your voice because Brackeys has taken a break from youtube
    😢😢😢😢😭😭😭😭

    • @virusocyrus
      @virusocyrus 4 года назад +30

      No he's done for good :'(

    • @RedCroissantGames
      @RedCroissantGames 4 года назад +5

      same buddy :(

    • @hunterc4881
      @hunterc4881 4 года назад +24

      "Good-bye and thanks for everything" doesn't sound remotely like a break tbh.

    • @monkeyrobotsinc.9875
      @monkeyrobotsinc.9875 4 года назад +6

      i was in tears listening to his voice for entirely different reasons..... :((((((

    • @h-aram1933
      @h-aram1933 3 года назад +5

      @@monkeyrobotsinc.9875 i guess feeling overwhelmed with how complicated coding seems? for me that was it

  • @davestone8766
    @davestone8766 3 года назад +502

    "in 6 minutes" ... *does tutorial in hyper speed*

    • @erdgerd9584
      @erdgerd9584 3 года назад +17

      Jup kinda hard to understand though like 10 minutes would have bbeen great

    • @Onek3i
      @Onek3i 3 года назад +9

      Kinda the point tho

    • @gamermazu8569
      @gamermazu8569 2 года назад +2

      Slow the speed of video

    • @Nebulaoblivion
      @Nebulaoblivion 2 года назад +3

      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.

    • @davestone8766
      @davestone8766 2 года назад +3

      @@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.

  • @axer1015
    @axer1015 3 года назад +105

    I feel like this guy might be our Brackeys from now on

  • @charlescaton
    @charlescaton Год назад +24

    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!!!

  • @ayushsagar8074
    @ayushsagar8074 4 года назад +44

    Best Tutorial for Enemy AI on RUclips

  • @kerduslegend2644
    @kerduslegend2644 3 месяца назад +2

    what. a. timeless. tutorial.
    literally as i write this comment this tutorial work even after 4 years later.. thanks unity for making such beginner friendly engine and thanks to you for making such comprehensible tutorial!

  • @kburrrrr
    @kburrrrr 7 месяцев назад +10

    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

    • @kamartyr
      @kamartyr 6 месяцев назад

      Thanks!

  • @fernandosilva9679
    @fernandosilva9679 2 года назад +81

    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

    • @mazenhassan2011
      @mazenhassan2011 2 года назад +2

      Can u tell me how to implement that ?

    • @gamdevgamdevpropro2781
      @gamdevgamdevpropro2781 2 года назад +2

      @@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,

    • @justgix7165
      @justgix7165 Год назад

      How does one get the nav mesh agent

    • @343guiltyspification
      @343guiltyspification Год назад

      @@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.

  • @acemoistman
    @acemoistman 4 года назад +152

    Bruh 6 minutes......im new to C# and I understood that perfectly, you're a fucking beauty

    • @davegamedevelopment
      @davegamedevelopment  4 года назад +19

      Haha thanks! :D

    • @brekol9545
      @brekol9545 3 года назад +4

      iam new too but i dont understand anything as alwyas :D but Daves tutorials are great :DD

    • @4ourhearts83
      @4ourhearts83 3 года назад +3

      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...

    • @Your_Sourav.
      @Your_Sourav. 7 месяцев назад

      @@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🙏🙏🙏

    • @maxhrbobrndsted-nv3nz
      @maxhrbobrndsted-nv3nz 7 месяцев назад +1

      @@Your_Sourav. same

  • @georgeabidbol5180
    @georgeabidbol5180 3 года назад +125

    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 😁

    • @mellemoomoo1701
      @mellemoomoo1701 2 года назад +3

      thank you for the tip it realy helps👍

    • @rprivateaccount5167
      @rprivateaccount5167 2 года назад +3

      I found it was because my player wasn't named "playerobj"

    • @rprivateaccount5167
      @rprivateaccount5167 2 года назад +1

      so I went to the script and changed it to the name of the player

    • @srujanpola3784
      @srujanpola3784 2 года назад +1

      @@rprivateaccount5167 me too

    • @dahugo9740
      @dahugo9740 Год назад +1

      well what if he just goes up to the sky

  • @smokeback
    @smokeback 2 года назад +14

    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

  • @elixerprince_music
    @elixerprince_music 3 года назад +50

    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.

    • @ryanxezter3910
      @ryanxezter3910 2 года назад +5

      thank you brotha was being so confused to what I was doing and y it wasn't baking lol ty tyty

    • @partishdarji26
      @partishdarji26 Год назад +1

      hey!
      can u tell what is projectile 4 and how to attach it???

    • @aokutor
      @aokutor Год назад +1

      @@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.

    • @partishdarji26
      @partishdarji26 Год назад +1

      @@aokutor well thx for ur reply but i already got it!

  • @luciorojas4278
    @luciorojas4278 4 года назад +42

    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!

    • @axer1015
      @axer1015 3 года назад +8

      What about the fact he go faster den SANIC.

    • @gamermazu8569
      @gamermazu8569 2 года назад

      Slow the speed of the video

    • @carelesswhisker4155
      @carelesswhisker4155 Год назад

      yeah if "just what is needed" is "nothing at all"

  • @farisalmiqdad7146
    @farisalmiqdad7146 3 месяца назад +2

    I keep coming back to this one. surprisingly simple, surprisingly effective.

  • @shayaanabbas2881
    @shayaanabbas2881 4 года назад +70

    I don't understand only one thing.... HOW ARE YOU SO GOOD?!

  • @KaosWater
    @KaosWater 2 года назад +2

    I look away for one second and it's already the next video.
    Great tutorials btw.

  • @obsidian2562
    @obsidian2562 4 года назад +18

    Damn right to the point. Very nice tutorial. You didn't waste a moment. Thx for this tutorial.

    • @davegamedevelopment
      @davegamedevelopment  4 года назад +4

      Glad you liked it! :D Thanks for watching

    • @001Camera
      @001Camera 2 года назад

      did it work for you? if so I need help. my enemy just stands there and does nothing I have no errors. pls help

  • @AlexraptorGameDev
    @AlexraptorGameDev 2 года назад +24

    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. :)

    • @KoopaD.WaterTroopa
      @KoopaD.WaterTroopa 2 года назад

      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.

    • @AlexraptorGameDev
      @AlexraptorGameDev 2 года назад +2

      @@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. :)

    • @dak5327
      @dak5327 Год назад

      Yooo, just wondering how you made the waypoints / patrol paths to work with the code. Beginner coder here bahaha

  • @lonr_gsmo4583
    @lonr_gsmo4583 3 года назад +12

    Mans types so fast visual studio can’t keep up

  • @ShadaSomeGuyYT
    @ShadaSomeGuyYT 4 года назад +20

    This channel is so underrated

  • @shauas4224
    @shauas4224 Год назад +2

    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

    • @thenoseguy
      @thenoseguy 18 дней назад

      So how do you fix it?

    • @shauas4224
      @shauas4224 18 дней назад

      ​@@thenoseguy depends on your use case. If you gonna have a lot of enemies - ditch built-in agent agent system, its slow and runs on main thread. Use pathfinding solution. There are various ok asset store and a lot of info online on implementing your own. Physics.Overlap is gonna be Hella slow with big number of enemies, you can use quad/oct/k trees to optimising distance checks. There's also numerous tutorials for that online. For patrolling/chasing/ whatever use state machines or behaviour trees for advanced use cases. If your game is small enough and you have room for performance load, you can use this and it'll be fine

  • @Mcdoogs
    @Mcdoogs 4 года назад +3

    had a little trouble with figuring out layers but got it working after a little more research :) Thanks dude!

    • @mregghead9521
      @mregghead9521 2 года назад +1

      Im having trouble with the layers showing what did you do?

    • @joshuabauzon2341
      @joshuabauzon2341 2 года назад +1

      @@mregghead9521 Same here bro, did you find any solutions?

    • @ikkinu_1924
      @ikkinu_1924 4 месяца назад

      @@mregghead9521 any of you got it working?
      plz help

  • @TheAwesomeAlan
    @TheAwesomeAlan 2 года назад +21

    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.

    • @micol04
      @micol04 Год назад

      i have same. how did you fix this?

    • @TheAwesomeAlan
      @TheAwesomeAlan Год назад

      @@micol04 Never did.

    • @micol04
      @micol04 Год назад +5

      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)

    • @micol04
      @micol04 Год назад +3

      It spawns from wherever you put the spawn point game object irregardless of where it turns
      Use quaternion also instead of rotation

  • @Lazy2Dev
    @Lazy2Dev 8 месяцев назад

    Great tutorial man, it’s a big help cause I’m very new to enemy ai

  • @FunNooberCodingForBeginners
    @FunNooberCodingForBeginners 4 года назад +5

    This tutorial really helped! Thanks! I am working on FPS AI and a can't tell you how much this helped! Thumbs up!

    • @davegamedevelopment
      @davegamedevelopment  2 года назад +1

      Glad I could help!

    • @Your_Sourav.
      @Your_Sourav. 7 месяцев назад

      @@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

  • @Betruet
    @Betruet 2 года назад +2

    I love your video style and clear code. Subscribed!

  • @base4800
    @base4800 4 года назад +15

    Dave if you continue creating videos like this one you will be the next Brackeys on RUclips or even bigger, congratulations and thanks for this amazing content. 👍

  • @USBEN.
    @USBEN. 2 года назад +1

    Thankyou , this script acts as a nice base to build upon more complex behaviours.

  • @Underarmour81
    @Underarmour81 3 года назад +4

    Awesome tutorial! This worked out amazing in my game.

  • @BlackLoboGaming
    @BlackLoboGaming 2 года назад

    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.

  • @strikelight1041
    @strikelight1041 3 года назад +16

    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

    • @time133
      @time133 3 года назад +1

      how to select the floor???

    • @strikelight1041
      @strikelight1041 3 года назад +1

      @@time133 click it? im not sure what you mean

    • @strikelight1041
      @strikelight1041 3 года назад +1

      @@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

    • @developer7046
      @developer7046 3 года назад

      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.

    • @budazenYT
      @budazenYT 2 года назад

      @@potato1947 same 😭

  • @breeze3104
    @breeze3104 2 года назад +2

    Thank you, even helped out in the discord.

  • @michelmurr1949
    @michelmurr1949 3 года назад +3

    dude don't stop making videos you have some amazing content that A LOT of people can learn from

  • @alecbeaton6862
    @alecbeaton6862 3 года назад +1

    This boi is helping me so much. You are amazing

  • @miguelarocazarco5744
    @miguelarocazarco5744 4 года назад +6

    Your channel looks very very good, your voice reminds me brackeys too hahaha

    • @davegamedevelopment
      @davegamedevelopment  4 года назад +2

      Haha, thanks a lot! :D

    • @gaminganimator-qp2ir
      @gaminganimator-qp2ir 4 года назад

      @@davegamedevelopment wait are u .................................

    • @Shezza_1212
      @Shezza_1212 4 года назад

      @@gaminganimator-qp2ir no, his voice seems a bit too deep as well as the fact that brackeys was well serious about leaving RUclips.

  • @Kharabish
    @Kharabish 6 месяцев назад

    dude u r awesome
    i was looking for this for a couple of days
    thank u so much ♥

  • @SkyZizzle
    @SkyZizzle Год назад +8

    The “Nav Mesh Surface” script doesn’t appear the same way yours appears. Any way to fix?

    • @FOLDIK_UA
      @FOLDIK_UA 9 месяцев назад

      write your own script based on the logic of enemies. I don't see any other solution🥲

    • @TheDodoKing
      @TheDodoKing 5 месяцев назад

      Did you install the package?

  • @BtaraDev
    @BtaraDev 2 года назад +1

    Thank You, This really helped me learn more about NavMeshAgents. I modified the code and used it to make an AI for my Game.

  • @noony31122009
    @noony31122009 2 года назад +1

    ur really amazing iam
    really looking forward for ur next tutorials !!

  • @spielsuchtige5011
    @spielsuchtige5011 3 года назад +6

    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?

    • @fezza2283
      @fezza2283 3 года назад +1

      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

  • @ShawnGreyling
    @ShawnGreyling 3 года назад +2

    THIS IS AMAZING! Don't stop making these tutorials.

    • @davegamedevelopment
      @davegamedevelopment  2 года назад +3

      Thanks a lot! And well... I did stop :D
      But from now on I'll be uploading regularly again!

  • @Delvarn
    @Delvarn 4 года назад +8

    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?

    • @davegamedevelopment
      @davegamedevelopment  4 года назад +7

      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

    • @Delvarn
      @Delvarn 4 года назад +2

      @@davegamedevelopment Worked a treat, thanks!

    • @harryprettejohn5722
      @harryprettejohn5722 8 месяцев назад +1

      I am confused about this as well!

    • @harryprettejohn5722
      @harryprettejohn5722 8 месяцев назад +1

      I can't find the layermask

  • @adham.walid.khatab.6874
    @adham.walid.khatab.6874 2 года назад

    Bet your soft is absolutely amazing! Never give up

  • @tyler7268
    @tyler7268 3 года назад +3

    This is exactly the kind of tutorial i need. And is the exact solution i was looking for. Thank you so much!

  • @nicolomontuschi6719
    @nicolomontuschi6719 3 года назад

    Please bro continue to post videos you are great and we miss you!,ps your website is amazing!

  • @Dbdelaney4
    @Dbdelaney4 4 года назад +7

    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.

    • @cbasx1887
      @cbasx1887 3 года назад

      happens same to me

    • @manishshrestha4263
      @manishshrestha4263 2 года назад

      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.

    • @the_chocolade
      @the_chocolade 2 года назад

      @@manishshrestha4263 what should i do?

    • @melder0487
      @melder0487 2 года назад

      @Chocolade YT It is posible your ground is not on the "WhatIsGround" Layer

    • @elias-jugen
      @elias-jugen 2 года назад

      For anyone has their AIs not patrolling, assigning the value walkPointRange will fix this problem

  • @unitygamedev2326
    @unitygamedev2326 2 года назад +1

    this is really cool man , thank you very much

  • @GameDevNerd
    @GameDevNerd 3 года назад +4

    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. 😄

    • @innerbladet
      @innerbladet 3 года назад

      Sounds like a Great game in development

    • @GameDevNerd
      @GameDevNerd 3 года назад

      @@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. 🙂

    • @innerbladet
      @innerbladet 3 года назад +1

      @@GameDevNerd thx for the tips and hope everything goes good for you

    • @judetremblay-e6l
      @judetremblay-e6l Год назад

      do you know how to get nav mesh

  • @TheDeathskull37
    @TheDeathskull37 3 месяца назад +1

    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.

  • @Galaxy_World
    @Galaxy_World 3 года назад +3

    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.

  • @kirby6844
    @kirby6844 3 года назад +2

    So I’ve been creating a game and this was really helpful. Though I am making a horror game. But still was helpful! Thanks!

  • @iggythemad
    @iggythemad 4 года назад +7

    This is great! Straight to the point. I have a request please

    • @davegamedevelopment
      @davegamedevelopment  4 года назад +6

      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

    • @iggythemad
      @iggythemad 4 года назад +2

      @@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.

    • @davegamedevelopment
      @davegamedevelopment  4 года назад +3

      @@iggythemad 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

    • @iggythemad
      @iggythemad 4 года назад +1

      @@davegamedevelopment why didnt I think of this... i thought i had to use the navmesh or something

    • @davegamedevelopment
      @davegamedevelopment  4 года назад +1

      @@iggythemad 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

  • @EvanStreblow
    @EvanStreblow 3 года назад +2

    Super helpful, man. Thanks!

  • @shanjohnkj6851
    @shanjohnkj6851 3 года назад +6

    This is Brackeys Channel. I think He is doing Side Business from this channel.... hahaha . Exact As Brackeys

  • @robbytegd4347
    @robbytegd4347 3 года назад +1

    The only thing I can say about this video is you've got a new subscriber :)

  • @claudiodias0089
    @claudiodias0089 4 года назад +6

    hmm... the NavMeshSurface doesn't have the baking options or most of the others you have /: pls help

    • @davegamedevelopment
      @davegamedevelopment  4 года назад +2

      Did you import the nav mesh components correctly? :D

    • @GameEditMrCzopowski
      @GameEditMrCzopowski 4 года назад +1

      @@davegamedevelopment how do you import the nav mesh components correctly?

    • @CuriousCreatorsYT
      @CuriousCreatorsYT 4 года назад +1

      Make sure your GameObject is set to Static. Your NavMesh surface should be static to bake.

  • @tomatrix7525
    @tomatrix7525 4 года назад

    Best youtube on Game Dev hands down. Especially now that Brackeys gone, you will grow even more

  • @atakankuloglu4877
    @atakankuloglu4877 2 года назад +3

    The voice is the same with Brackeys?

  • @theozetterberg4591
    @theozetterberg4591 4 месяца назад

    tysm with a bit of tweaking this worked really good

  • @deadasadodo1016
    @deadasadodo1016 2 года назад +7

    How do you download the nav mesh

    • @Nemko77
      @Nemko77 7 месяцев назад

      Maybe you know it already but it's ai navigation in the package manager.

  • @gameginger5529
    @gameginger5529 3 года назад +1

    such clean and organised codes , totally awsm tut

  • @gamingthomas8146
    @gamingthomas8146 3 года назад +4

    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.

    • @devxtreme259
      @devxtreme259 2 года назад +1

      Make sure you select navigation and bake

    • @angelchurrumais
      @angelchurrumais 2 года назад

      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.

  • @zabuzay9869
    @zabuzay9869 3 года назад +2

    The video was really well explained! Even I could get along pretty well. Good job!

  • @P4rz1va1
    @P4rz1va1 4 года назад +3

    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.

    • @AkariK3
      @AkariK3 3 года назад

      Please, would you mind to share how you did it? TY in advance

  • @thegannman4558
    @thegannman4558 2 года назад

    Thank you so much, I was having a lot of trouble with this

  • @sapphirecorn3635
    @sapphirecorn3635 2 года назад +3

    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?

    • @zypherone
      @zypherone 2 года назад

      Do you have an active rigid body on the enemy? Because if it’s just falling through then maybe the collision is off

    • @Emerald_Dev
      @Emerald_Dev 2 года назад

      Same I’ve been fiddling with it for a while now and it just keeps happening, not sure how to fix it.

    • @kevCjm6dhhihiujkbbhjhvcfyhuiij
      @kevCjm6dhhihiujkbbhjhvcfyhuiij 2 года назад

      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.

  • @jettnash5217
    @jettnash5217 2 года назад +1

    Well this is exactly what I was looking for, thanks a lot!

    • @davegamedevelopment
      @davegamedevelopment  2 года назад

      Glad I could help!

    • @bakedpizza4037
      @bakedpizza4037 2 года назад

      The enemy ai script automatic turns off ... Why???

    • @Cat_6921
      @Cat_6921 Год назад

      @@bakedpizza4037 Because the name of the player

  • @redsgaming4614
    @redsgaming4614 2 года назад +2

    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.

    • @geoffreyaji8659
      @geoffreyaji8659 Год назад

      were you able to figure out why this was happening

  • @damvcoool
    @damvcoool 2 года назад

    I really like this because it's the only Tutorial I have found where ai patrols without multiple patrol points

  • @agamesjourney4292
    @agamesjourney4292 4 года назад +5

    Dave the enemy's aren't shooting with me how do i fix this aside that a great tuturial

    • @axer1015
      @axer1015 3 года назад

      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.

    • @vidjey2597
      @vidjey2597 5 месяцев назад

      probably because your player tag is not the same as in the script

  • @Gszada
    @Gszada 2 года назад +1

    Your code is a pleasure to read

  • @Poley12
    @Poley12 Год назад +5

    There no navmeshagent for me and it is driving me insane

    • @ScientObject40
      @ScientObject40 6 месяцев назад

      I think you have to install it in the package manager.

    • @Poley12
      @Poley12 6 месяцев назад

      Yeh it is not in package management for me

  • @IceWolve67
    @IceWolve67 2 года назад

    worked really well in my own project, thanks !

  • @ricardovicente9666
    @ricardovicente9666 2 года назад +3

    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

    • @davegamedevelopment
      @davegamedevelopment  2 года назад +2

      You can change the speed in the navmeshagent settings

    • @Nitzustaja
      @Nitzustaja 2 года назад

      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 )

    • @Nitzustaja
      @Nitzustaja 2 года назад

      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

  • @NeroForte_
    @NeroForte_ 2 года назад +1

    Now I understand the difference between blueprints and c#.

  • @ashleyk9141
    @ashleyk9141 3 года назад +4

    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!

    • @martinschifer3603
      @martinschifer3603 3 года назад +2

      Same here!! Did you find any solution?

    • @cooperswain3118
      @cooperswain3118 3 года назад +1

      hey just wondering if you found the solution, i am having the same problem.

    • @dralbintokomesemito8829
      @dralbintokomesemito8829 2 года назад

      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

    • @elias-jugen
      @elias-jugen 2 года назад

      You must set the walkPointRange value so that the variables randomX and randomZ work properly

  • @hefferwolff3578
    @hefferwolff3578 6 месяцев назад

    This was fantastic for my game!

  • @rocketthab8.5
    @rocketthab8.5 3 года назад +4

    it doesnt work for me the enemy just flies into space like it has reversed gravity

  • @berintandaniel1643
    @berintandaniel1643 Год назад +1

    Look into coroutines instead of invoking. Gives so much more flexibility and invoking is also more expensive. Amazing tutorials as always.

  • @insomniclipse9400
    @insomniclipse9400 Год назад

    In case you guys dont know how certain lines of code work you can just ask chatgpt! its so helpful. I never heard of physics.checkSphere before but now I know what it does so I can utilize it in my future projects.

  • @boy-with-a-keyboard
    @boy-with-a-keyboard 3 года назад +3

    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

  • @louislemur
    @louislemur 3 года назад

    love how short and good this video is

  • @ascheron2
    @ascheron2 Год назад +3

    There is no Bake Button.. I cant bake

  • @anshg_7125
    @anshg_7125 4 года назад

    thanks a lot Dave! I subbed :D

  • @ScratchTuto
    @ScratchTuto 4 года назад +3

    Now I've downloaded the zip file but how I get those godes in the unity editor?

    • @not_herobrine3752
      @not_herobrine3752 4 года назад

      drag and drop into the assets folder... at least thats what i did

    • @ScratchTuto
      @ScratchTuto 4 года назад +1

      @@not_herobrine3752 It didn't work whit me

    • @not_herobrine3752
      @not_herobrine3752 4 года назад

      @@ScratchTuto are you sure you have downloaded the right version of the zip file? like the latest version for unity 2020 and so on?

    • @ScratchTuto
      @ScratchTuto 4 года назад +1

      @@not_herobrine3752 idk I dosen't need it any more but thx for the help

    • @cloakedd_
      @cloakedd_ 3 года назад

      @@not_herobrine3752 then what do I do?

  • @transsatanic4591
    @transsatanic4591 3 года назад

    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!

  • @praisethemibbers8991
    @praisethemibbers8991 4 года назад +10

    Hello, thanks for the tutorial. Im very new to all this so im struggling a little. I made a sphere as the enemy, and i gave it all the scripts and stuff. I followed the tutorial until 5:27 basically. But my enemy is not moving, and it just shoots whenever it wants. it shoots at the player which is good, but i basically have a turret with infinite range in my game. How can i make the sphere actually move and act like an enemy? Also why does it just ignore the sight radius and stuff. (i dont have any errors in my console)

    • @_solar.
      @_solar. 3 года назад

      nav mesh? i suggest this discord: discord.gg/Ye6zzfQ

    • @axer1015
      @axer1015 3 года назад +1

      Hey, I suggest using the capsule if it is a ground enemy. If you want to make an enemy that can fly, this tutorial will not work.

    • @shang_psycho7414
      @shang_psycho7414 2 года назад

      Same, I didn't add a gun to mine, it's just not moving.

    • @Geckotr
      @Geckotr 2 года назад

      i couldn't make it move too

    • @Geapen8
      @Geapen8 Год назад

      same, can't make it move

  • @imaUFO672
    @imaUFO672 4 года назад

    Thanks dude this was very helpful!

  • @Emr3letzemre
    @Emr3letzemre Год назад +5

    help my ai IS FLYING AWAY

  • @M3g4t0n
    @M3g4t0n 2 года назад +2

    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!

  • @x.4132
    @x.4132 2 года назад +5

    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....

    • @001Camera
      @001Camera 2 года назад

      Same it doesnt move when i do it!

    • @junaidjamshed8104
      @junaidjamshed8104 2 года назад

      @@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

  • @lvaedho5283
    @lvaedho5283 Год назад

    Thank you for the tutorial and script, its very helping . . . . .

  • @fate70
    @fate70 4 года назад +5

    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.

    • @lordzockt1853
      @lordzockt1853 4 года назад

      did you set the " What is Ground“ var right ?

    • @lordzockt1853
      @lordzockt1853 4 года назад

      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 ;/

    • @someonenamedegg1844
      @someonenamedegg1844 11 месяцев назад

      I dont even have that which is annoying, it dosent show the "what is player" or "what is ground"@@lordzockt1853

  • @mrpotato8196
    @mrpotato8196 2 года назад +1

    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*

  • @renatogenovese2718
    @renatogenovese2718 4 года назад +4

    hey dave i'm working on a 2d top down shooter and i'm using your script from the first projectile gun tutorial without reloading,the bulletsleft and the ray. when i do a burst gun instead of firing like RATATA, RATATA, it fires like RATATATA, RA, RATATATA, RA, maybe because it invokes resetshooting also with the burst projectiles. i'm also always shoting when i use the right analog because it moves with the left joystick and rotates with the right joystick. here is my code. can you help me??
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    public class player : MonoBehaviour
    {
    //general
    Rigidbody2D rb;

    //movement
    public float movespeed;
    Vector2 movement;
    public FixedJoystick movejoystick;
    //rotation
    public float rotatespeed;
    public Joystick rotatejoystick;
    //shooting
    public GameObject bullet;
    GameObject bulletshotted;
    public Transform head;
    public float bulletspeed;
    public bool readytoshoot;
    public float timebeetweenshooting;
    public guncontainer gun;
    public int bulletspertap;
    public int bulletsshot;
    public float timebtwnshots;
    public bool allowinvoke;
    void Update()
    {
    //movement
    float horizontal = movejoystick.Horizontal;
    float vertical = movejoystick.Vertical;
    movement.x = horizontal;
    movement.y = vertical;
    //rotation
    Vector3 movevector = (Vector3.up * rotatejoystick.Horizontal + Vector3.left * rotatejoystick.Vertical);
    if (rotatejoystick.Horizontal != 0 | rotatejoystick.Vertical != 0)
    {
    transform.rotation = Quaternion.LookRotation(Vector3.forward, movevector);
    }
    //shooting
    if (rotatejoystick.Horizontal != 0 && readytoshoot || rotatejoystick.Vertical != 0 && readytoshoot)
    {
    Shoot();
    bulletsshot = 0;
    }
    timebeetweenshooting = gun.timebetweenshooting;
    bulletspertap = gun.bulletspertap;
    timebtwnshots = gun.timebtwnshots;
    }
    void FixedUpdate()
    {
    rb.MovePosition(rb.position + movement * movespeed * Time.deltaTime);
    }
    public void Shoot()
    {
    if (bulletsshot < bulletspertap)
    Invoke(nameof(Shoot), timebtwnshots);
    readytoshoot = false;
    bulletshotted = Instantiate(bullet, head.position, head.rotation);
    Rigidbody2D bulletrb = bulletshotted.GetComponent();
    bulletrb.AddForce(head.up * bulletspeed * Time.deltaTime, ForceMode2D.Impulse);
    Destroy(bulletshotted, 2);
    bulletsshot++;
    if (allowinvoke)
    {
    Invoke(nameof(Resetshooting), timebeetweenshooting);
    allowinvoke = false;
    }

    }
    void Awake()
    {
    rb = GetComponent();
    readytoshoot = true;
    bulletsshot = 0;
    allowinvoke = true;
    }
    private void Resetshooting()
    {
    readytoshoot = true;
    allowinvoke = true;
    }
    }
    thanks dave!

  • @thewhitedragon2283
    @thewhitedragon2283 3 года назад

    You are a legend my friend

  • @chrissiededeer7256
    @chrissiededeer7256 3 года назад +3

    Can someone help me out if n put the NavMeshSurface on an object it doesnt show me the same menu
    Theres an empty slot called NavMeshData and an agent type ID
    Edit and no bake option