Hello and Welcome! I'm your Code Monkey and here you will learn everything about Game Development in Unity using C# taught by a Professional Indie Game Developer.
Watch the free Video Tutorials or learn from my complete Step-by-step Courses unitycodemonkey.com/courses
Check out the official website to download the free Project Files and Utilities for every video unitycodemonkey.com/
I've been developing games for several years with 9 published games on Steam and now I'm sharing my knowledge to help you on your own game development journey.
If you have any questions post them in the comments and I'll do my best to help.
The kawaii pack likely has combat animations because it's a common trope in anime for girly characters to slap each other around or to punish boys who are being lewd. Usually, these attacks are incredibly exaggerated and meant to suggest more damage than they'd realistically be capable of.
Why does every channel that teaches unity have a course or mini-course in their playlists on how to make a TPS, but when it comes to FPS it's so difficult to find one that's really good? My intention is not to offend, I have only been looking for fps courses since 2016 and I never find one focused on this that is really good, I only find floating weapons and poorly done animations, no one teaches this well, whenever I try it myself, I end up coming across with a problem that I can't solve, and maybe for you, it's easy to solve these problems, but I'm Brazilian and in my language this content simply doesn't exist, and when I search in English, I don't find good options either, why is that?
Fps and third person shooter can be pretty much the same, just place the camera on the head of the object, and make it follow the object at some offset. If you want delete the head and place your camera at eye level. Other than that its the same controlers than a tps
Coming from the KitchenChaos tutorial, awesome video BTW. My thought though, if we want to stick with the self explanatory principle of writing code, shouldn't we always use GameObject for any object in the game, and Transform for any transform of an object in the game? This way there's less confusion when reading code, regardless of author and regardless of time/version of game engine when the code is written.
Do DataContract's work with Unity? Because if they do, then that would be much nicer to deal with. Where all you have to do is mark a class you want data to save as "DataContract" and mark each member of the class you want to serialise as "DataMember"
If you're new to events then yup they can be quite a bit confusing at first. Rewatch the lecture and write some code. Once it clicks it becomes quite simple. You can also watch my dedicated Events lecture on my C# course ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-I6kx-_KXNz4.html
for those who are new to Unity, codemonkey also has a video teaching you how to properly SAVE a game using scriptable objects. you can think your game is saving properly in your unity engine, but once you deploy the game it won't actually save correctly!
02:50:44 Just a note in case any other newbie made this mistake as I do: Instead of disabling "KitchenCounter" I disabled "Selected", which results in the scripts attached to "Selected" do not Awake() in the first place. This results in the counter visual stays "unselected" (i.e. colorful) even when it is selected (should how the white-ish highlight). Took me quite some Debug.Log to figure this out.
I thought "what is the point of coding a class with generics if in the end the object managed by the grid must have a relathionship with the grid class". I understand we need to call the event when the object of the grid is changed. I would prefer to have a method like: public void performAction(int x, int y, Action<TGridObject> gridObjectAction ){ } if the cordinates are valid then call gridObjectAction and finally call OnGridObjectChanged. Am I breaking single responsability principle with my sugestion? I felt discuraged when seeing that the TGridObject has to be coupled with Gird<TGridObject> class.
To me generics is "You can contain anything". But if the object can not be anything and has to honor some conditions then the generic might be a subtype like Grid<TGridObject > where TGridObject : IInterfacesThatMakeTheGridObject has an atribute of grid type. I am just thinking out loud.
Not sure I understand your question, the whole point of Generics is so you can reuse the same GridSystem with any kind of GridObject type. For example I've used this same Grid System for Pathfinding, for a City Builder, for a Factory Game, etc; all of those systems use the same GridSystem but different GridObjects since each have different data requirements unitycodemonkey.com/search.php?q=grid
@@CodeMonkeyUnity Why the TGridObject has to know the Grid jus to call TriggerGridObjectChange? If so then TGridObject does not have to be a subtype of object. class A{ private int state; public void IncreaseByOne(){ state++; } } So the Grid. var grid = new Grid<A>(Vector.Zero,(Grid g, int x, int y)=> new A()); The Grid<A> will not now when the internal state changes. What if orchestrate the internal change and call the event? class Grid<TGridObject>{ public void performAction(int x, int y, Action<TGridObject> gridObjectAction ){ //get the xy object var theXYObject = ...; gridObjectAction(theXYObject); //Then call the event OnGridObjectChange(new OnGridChangeEventArgs( ... )) } }
Now that Unity 6 Preview version is out, is it advisable to start a new project with it and then later upgrade the fully-developed project to the LTS version, or do you think it will be difficult to make the transition due to compilation errors/ect? I'm trying to decide if I should wait for LTS before trying a serious project.
There aren't too many breaking changes so upgrading from 22 LTS should be simple. If your project is 6+ months from release then I would use Unity 6, if earlier then stick with 22 LTS
hey i want a guide to properly bind a game prototype to a story like start to finish , what could be helpful like any system . or a way of doing that thing , and when to call game is complete and near ready to release
I think you are right --- for the next 18 months. However, I think you underestimate the reasoning power of the growth of AI over the next 24 months and beyond. My bet is coders are 60% unemployed within 3 years, 90% within 5 years.
When ChatGPT4 came out people were saying coders would be out of a job within a year. It's been longer than that and yet here we all are. AI currently is already indeed insanely amazing, but being a software developer is also insanely complex.
I don't see Universal render pipeline when I try creating a new project, is it the 3D (built-in Render Pipline) one? That was probably a dumb question but Im just making sure.
It's not that one, it's called Universal 3D or URP (the templates have different names for each Unity version) You can also just download the project files for the lecture after that and continue from there
Where to get idle animations? Like when a character stands, then looks around, sighs or any sort of posture change. Seems like every animation pack only has 1 idle animation and no variations.
at 12:24 you were making new gameobject for levelpart2, and place the levelpart 2 at the end part1, my issues is why mine is different? when i put object inside the levelpart2 for platform, the levelpart2 gameobject change position? my levelpart2 "pivot" were at the center of platform instead of end of the part1, i hope you understand my words because im stuck here and this problem making my platform generation scrambled
@7:39:00 Made it towards the end. All this is coming together really nicely. I have to say @CodeMonkeyUnity this is an _excellent_ tutorial. You've explained things so well up to now that basically you say "and now we're doing ui" and I'm like "hmmm well I think that has to do with this canvas we made but now camera space instead of world space. And then you say what I think. Then I think "well I already anticipated this and added events to my delivery manager" and then thats what you go do. I'm at a point where you say what we're doing and I can get 90% of the way there and do it my own way, watch the chapter if I get stuck on some small things I dont know, then watch the whole things and compare what I did with what you instructed and consider pros/cons or see if it is even different at all. I do have some prior experience rolling my own renderers/engines (that never went anywhere) so that might help but I think your instruction method is top tier. Thanks for the tutorial
@@CodeMonkeyUnity I definitely will! Thank you SOOOO MUCH for your amazing course, you are a literal angel🥺🙏🙏😭😭 You're making my dreams come true, thank you thank you thank you!!💝💛🧡
Hello, for context I am making a hide and seek game. Got any tips on how I could go on and make this effect visible only when I want to be a seeker and not when I want to hide? It seems tricky as its on the renderer. Thanks! Edit:I kinda found a solution which is creating 2 cameras 1 for each player (hider, seeker) and 2 renderers 1 with the effect and one without (each camera are assigned the correct renderer) and when selecting hider I enable the hiders camera without the fov effect and vise versa
Did anyone have problem in a scenario where you have a plate on a clear counter, then you put meat patty on the stove counter, and during cooking you can't pick up the plate? I did some debugging and the object is there on the counter, but somehow when meat patty is cooking when I try to pick up plate from the counter I'm going into the if statement of counter has no item and player has no item, therefore nothing happens. After meat patty is burned I can pick up a plate once again from the counter.
Another simple way to get the diamond shape, without all the if statements: for (int x = -range; x <= range; x++) { for (int y = -range + Mathf.Abs(x); y <= range - Mathf.Abs(x); y++) { AddValue(originX + x, originY + y, amount); } } Here is the result after incorporating the falloff, although I did add an enum for different shape types, and some function names may be slightly altered, such as the GetXY function has been renamed, and this function moved into the HeatmapVisual script as it's more related to the heatmap than the grid itself: private void AddValue(Vector3 worldPosition, int amount, int totalRange, int falloffRange, HeatmapShapeType shapeType) { _grid.GetCellGridPosition(worldPosition, out int originX, out int originY); int lowerValueAmount = Mathf.RoundToInt((float)amount / (totalRange - falloffRange)); switch (shapeType) { case HeatmapShapeType.Box: for (int x = -totalRange; x <= totalRange; x++) { for (int y = -totalRange; y <= totalRange; y++) { int distance = Mathf.Max(Mathf.Abs(x), Mathf.Abs(y)); int addAmount = amount; if (distance >= falloffRange) { addAmount -= lowerValueAmount * (distance - falloffRange); } AddValue(originX + x, originY + y, addAmount); } } break; case HeatmapShapeType.Diamond: for (int x = -totalRange; x <= totalRange; x++) { for (int y = -totalRange + Mathf.Abs(x); y <= totalRange - Mathf.Abs(x); y++) { int distance = Mathf.Abs(x) + Mathf.Abs(y); int addAmount = amount; if (distance >= falloffRange) { addAmount -= lowerValueAmount * (distance - falloffRange); } AddValue(originX + x, originY + y, addAmount); } } break; } } Thanks CodeMonkey, really hope to continue watching your videos and learning new things, and particularly seeing how you make seemingly complex systems easy to understand, use, and implement.
I know this is an old video so dont know if Ill get an answer. But how does AI handle navigation around this? Like lets say I want a wall to be breakable. Then when it does finally break, how would I allow AI to know they can walk through that side now?
Normally you have a box collider for the pathfinding collision, then listen to an event when the object is destroyed and disable/destroy that collider and refresh the pathfinding