How To Make A 2.5D Game - Unity
HTML-код
- Опубликовано: 22 май 2024
- MY FULL 2.5D UNITY COURSE: www.gamedev.tv/p/unity-2-5d-t...
In this tutorial we take a look at bridging the gap between 2D and 3D by making a 2.5D game environment.
Want to talk to me, or other like minded developers?
Join The Discord: / discord
Buy me a coffee: ko-fi.com/thatoneunitydev
If you like the music in this video, you can get it from: www.epidemicsound.com/
Why isn't that like and subscribe button lit up? Smash it to oblivion!
------------------------
My Setup
PC: amzn.to/499LOMd
Drawing Tablet: amzn.to/3uhegNe
Microphone: amzn.to/4bqWkjX
Keyboard: amzn.to/3SvA2EV
Mouse: amzn.to/3wiriKF
Headset: amzn.to/3whZwxU
Desk: amzn.to/42Cot3w
Chair: amzn.to/489RIfc
Note: These products won't cost any more money than they typically would, but by clicking the link as an Amazon Associate, I earn commission from qualifying purchases.
------------------------
Timestamps
0:00 Introduction
0:33 Setup
2:29 Code
4:34 Visuals
6:18 Outro - Игры
Sub sub sub :p
Yes, yes, & yes!
That sub glowed when you told us to subscribe 🤣🤣
@@ScratcherGriffpatchFanRandom You made sure to click it right? 😉
i absolutely subbed. im an aspiring game dev. ive been making pixel art for a while and i love the 2.5D style. ty for the video
Bro are u serious? My jaw actually dropped when you imported the house model! (and when you did the sprite shadow). Great job, dude. Subbed.
Haha, thanks for watching! Glad you enjoyed! :)
This guy deserves a ko-fi!
Finally an tutorial that is up to date😂
Great tutorial! Really helped me out in creating my own 2.5D game in Unity. Thank you for sharing your knowledge with us and keep up the good work, I look forward to seeing more tutorials from you in the future!
Thank you so much! I'm glad you enjoyed the video! :)
Ive been lost trying to start building my idea for a game, this has opened my mind up a bit, love this style. Thank you for making it easy to understand as a concept
Thanks for watching! Glad you enjoyed the video! :)
bro that house extension thing you did is going to save me so much time
Haha, no problem! I'm glad you enjoyed the video! :)
Love it! Keep making in this style!
Great tutorial! If I recall correctly you can edit params in runtime in the inspector without having to stop the game and edit again.
super helpful i couldn't find any other tutorials that went over the sprite movement :)
Thank you so much! :)
You are a lifesaver. Please make tutorials on Unpopular topics. You explained this topic wonderfully. I am going to develop a similar-style game. It will be hard since the lighting will probably be messed up (imagine adding a torch). You have earned a Subscriber.
Thanks so much! Stay tuned as I do intend on continuing to cover more 'niche' gamedev topics! :)
Thanks for the tutorial, always wanted to make a game in this style. gonna set up the project now and begin tomorrow
No problem! Thanks for watching! :)
Thanks! Coming from unreal and was struggling. Helped a ton
Thanks for watching! Glad I could help! :)
Nice one! I like the idea of using a sphere to cast the players shadow. For Oh S**T Boulder I did a shader that cast the shadow, but I didn't think about doing a mesh collider
Haha, thanks for watching! Sometimes us developers can overcomplicate the most simplest things.
Thanks for the video, help me so much
nice lighting idea!
Amazing video very interesting to watch and have to make a project with this in mind
Thanks for watching! Glad you enjoyed it! :)
Great tutorial.
aaah exactly what i need. thank you!
Happy to help! :)
This is awesome, thank you!
Thanks for watching! :)
For the alogrythm bro, nice video
Thank you!! :)
Im making a game that has graphics similar to Gen 5 pokemon, and this is a big help! Thank you, definitely will be coming back once im done learing unity!
Thanks for watching! Glad you enjoyed the video! :)
I would die to play your version of the game, keep us posted.
@pratiikjagdale Yes I definitely will! It's a long way out, but I am almost done with the art work to it, so music/more coding is next!
Monetize this man
great stuff! 👏👏👏
Thank you! :)
I went to see how to make 2.5 D, in the end I realized that I already knew that, but I looked at the principle of creating pixel models in Blender, thank you)
Yeah, it is easier than most people think! But if you have no starting point, it can make things take longer/more difficult. Thank you for watching! I also have a full video on making pixel art models in blender! :)
As others have mentioned, what you did in Blender is like the best hack I’ve seen in game dev! Wow! I seriously don’t understand Blender. Any tutorial on there potentially?
You're in luck! I actually have a tutorial on this channel, on how to make this exact house in blender! :)
nice and concise :D
Thank you for watching! :)
Must admit. that was a well earned like and subscribe.
Thank you so much! I'm glad you enjoyed the video! 😀
Great video. Do you think this would be the right approach to take for something like castle crashers?
For sure, you could make a game like castle crashers with this method!
hi sir! thanks for all your videos. i have a question if you can help me!
i want to animate cenimachine when touch a trigger. ( i have multi triggers, and i want to zoom in and zoom out for each specify trigger )
in 2D game.
sorry for my english. if you can help me with a tutorial sir
you are so cool! thank you!!
Thanks for the video! Any ideas on how to make my player fall normally, because at the moment, he just slowly "slides" down?
This video is so good omg!!!!! :D :D :D
LOL. Thanks for watching! :)
Grear tutorial man! Could you help me out though, whenever I add a collider to my character it goes up endlessly on the y-axis instead of only by the change in hight of the terrain
Thanks for watching, glad you enjoyed it! I think your raycast is interacting with your player still, make sure you set the layers up correctly!
@@ThatOneUnityDevThank you! that was indeed it. I set thr character as terrainLayer 😂
The earliest game with 2.5D I can remember is Runescape classic back in 2001
Thank you for the tutorial, what is the resolution of the sprites you are using? I was having trouble getting sprites to look less pixelated.
Thanks for watching! I am using 32x32 for my sprites. Try changing the import settings to no compression, and use point no filter.
amazing video, inspired me to make a little prototype.
i followed your code and got it all working, but i was wondering how you would make the player jump as well?
new to unity, thanks :)
Because I opted for rigidbody movement, you should be able to remove the raycast that is snapping the player to the ground, and use something like the 'AddForce' function to make the player jump!
thank you!! works very well except that my player jumps infinitely. any idea how to fix that? @@ThatOneUnityDev
@gabrielheroux982 LOL, define "jumps infinitely." At this point, your character is basically just a normal 3rd person controller, minus rotations. Are you using the same practice as a regular 3D jump? For context, you can check out my latest video on how I handle a 2D jump, and then apply the same foundations but in 3D.
-Using a Physics.Raycast.
-Determining if your on the ground + timer.
-Applying the force.
-Reset jumps when landed.
I just want to mention that there's an option in unity called "GetAxisRaw" which has a much higher response feedback when it comes to Axis coding. I have no idea why that is not the default for GetAxis, but hey, that is what it is.
As far as i know, and correct me if i am wrong:
GetAxi is normalized and does some extra calculation behind the scene while GetAxisRaw does not and gives you the input-values unfiltered.
maybe that's why its more responsive.
Thank u pro
Hi I need some help how to make animation walk when Player is walk? Thank you!
Nice tutorial. Can you remake this for using Unreal Engine / Godot / Gdevelop? I don't wanna use Unity because of the distrust and infamy it's gained recently.
How do I make it so my idly animation switch to my walk animation, please help!
it kept telling me that hit.collider (line 28) cannot be referenced and is read only
does anyone know how to fix it?
this video is so good! OMG :D :D :D
Finally someone saw that. Lol Thanks for the comment! :)
very good
Thank you for commenting! :)
How did you set up the pixel textured terrain? Is it an existing asset or something you made?
Hi! Thanks for watching! :) ... The texture was actually just a seamless pixel art grass tile I found on opengameart.org. Although I did make the dirt tile with a simple pixel art program. It works the same as any other texture you might paint on the terrain.
that's so cool
Thanks for watching! :)
Hey! Im trying to do something similar and was wondering how you made your 2d tilemap tiles into a terrain texture? I'm trying to use a grass texture i have to layer the floor of the terrain but cant as it shows up as a tile
You can't use a 2d tile map as a texture. In seperate drawing software, such as photoshop, you will need to cut out your tile, and save it separately as a .png. Then when you import it, make sure it is set as a texture in your import settings! You can then use it on your terrain, or even make a material and use on a 3D model. :)
@@ThatOneUnityDev Makes so much sense now. Thank you so much! Just enrolled in the course as well. I’m excited to follow along
@@blackskull Thank you so much! Hope you enjoy it!
Do you know how one would make that when the camera moves, the character changes sprites corresponding to his position and the position of the camera?
So basically a 3rd person controller, but with sprites? Off the top of my head, I would probably do some sort of angle maths from the camera's forward to the player's, and use ranges to switch based on that. There might be a better/easier way though.
Hello I’m having trouble and would appreciate the help, I’m trying to do the animations using if speed is greater than x play the walking animation or if speed is less than x play the idle animation but don’t know how to change the code to alter the speed, any tips?
So what I would do, is create a float speed parameter in your animator. Then in the code, you would get your animator component and set the speed parameter bellow the movement, to be the x variable. So anim.SetFloat("speed",x);
Your animator transitions would be going to walk if speed is not equal to 0, and returning to idle if it is.
The x variable is simply the players input. Which is already setup to be either -1 for left, 1 for right, and 0 for no input at all.
Amazing video but if I want to add jump with the raycast movement you wrote in the video. In this case how should I make it?
Because I opted for rigidbody movement, you can just ignore the raycast, and everything should work as intended. Then just use an AddForce function on input (as you normally would) to handle the jump.
@ThatOneUnityDev Thanks,but if I want clean terrain movement on a slope like you did in the video, how should I do it?
@@user-qd6wj2ri6w It will still work in a similar way because we are using rigidbodies. The gravity should keep your player on the slope. Alternatively, if you for whatever reason want to keep the raycast, you can create a bool, and stop the snapping when you hit the jump input, and re-enable it when you touch the ground.
@ThatOneUnityDev ok,I will try to use the boolean. Thank you for replying me😀
heyyy quick question thou, i tried your code etc, and why does my character passes through the terrain ? i mean when it walks, it passes through the bumps that ive made instead of walking on top of them
Did you make sure to properly set the ground distance, and terrain layer in the inspector?
@@ThatOneUnityDev yeahh thank you it worked now!
(sorry for bad english) hi, can you do a tutorial for create 3d object with 2d image? and another question, i try to do something in blender like you do in a video , but i have a mess , when i put a value in thickness, the house is not of the color of your
Hmm, that's interesting. It's hard to say what might've happened. It should be just as easy as I showed in the video.
Hopefully, you can fix it by looking at other examples of how to use the knife tool in blender. If you still get stuck, you could always join the discord, and we could help you out!
HI! I'm new to Unity so I wanted to ask if it was possible to make the character move only horizontally and not in depth. my idea is to make a side scroller game and just simulate the depth of buildings etc. Sorry for the “stupid” question 😅
Haha, thanks for watching! You can easily do that by removing the "float y = ...." line and on the line below it, replace the y with a 0. :)
Where did you get the original assets for the player, the ground etc. I know you made the house but what about everything else?
Sorry if I wasn't clear in the video. I made all of the assets.
@@ThatOneUnityDev Oh that’s my bad. Well let me just say then that your pixel characters and animations are amazing!
@@nedkins6355 Haha, Thanks! :)
Great tutorial, but cinemachine just breaks everytime I try to add the 2D camera, i.e. the camera will no longer move and the player is stuck in place in the game view but still moves in the scene view. Any theories?
Thanks!
Hmmm, that's really odd. Nothing I can think of off the top of my head. If you can't solve the issue, I would advise to create a custom camera follow script; or even easier, just position your camera how you like it, and make the camera a child of the player. :)
Hello. I'm still havinga bit of trouble understanding how oyu just.. popped in your sprites into unity?
Dragging images in myself just puts them on game objects as textures. Am i missing something?
In 3D URP, unity defaults all sprites to textures. All you have to do, is make sure you have the sprite package installed, and in your sprites import settings, it's actually set to sprite.
So how would you branch out and be able to explore forwards and backwards? (I.e like an rpg / dungeon crawler that isn't just side scrolling with minimum front and back, but full exploration) .. same concepts or is there another trick
It's already setup to do just that! This specific demo scene doesn't demonstrate it very well, but the additional videos I made do. They even have verticality.
@@ThatOneUnityDev Awesome thanks. I'm trying to create a first game and I really want to leap for the 2.5D aspect, but I am weighing 3D and 2D as well. Seems as far as material out there there is alot more for 2D and 3D. I appreciate you!
Did you paint the grass with the terrain tool or place it manually?
Thanks for checking out the video! I believe in this example I placed the long grass manually. In my other video, I used the terrain tool. :)
when you gave the building some *THICKNESS* how did you get the middle to fill? I've researched and cant find any way to replicate that.
I actually have a tutorial on my channel on how to make the house, as well as another (better) method! :)
@@ThatOneUnityDev thx. I will look there then 👍
I want to learn this style. I'm really bad at creating my assets
I recently posted an announcement about a 2.5D course I created! If you take the course, you will gain access to all the assets you need! :)
My unity says, 'Mathf does not contain a definition for infinity' and my player controller script doesnt have speed, height, etc. options. Do you know why?
Thanks for watching! Very strange. I'm assuming the reason you don't have speed, height, etc, is because the Mathf error. Upon looking into it, the only explanation I have is maybe you didn't spell it correctly! It needs to be exactly " Mathf.Infinity ". Lmk if that worked for you! :)
Could you possibly make a tutorial on how you were able to make that house sprite 3D in Blender? Thank you so much brother.
What a coincidence! I just finished uploading and scheduling that exact video for 12.5hrs from now! :)
NIce Job
Thanks for watching :)
Could you go more into depth with how you converted that house into a 3d model?
Yeah, for sure! I will make a video about it! :)
I am a beginner and i want to start my gamedev journey so should i start by making 2d games or 3d games ??
Or should i first learn c # till advanced
By the way your vedio helped a lot
Thanks for watching! Glad you enjoyed! My suggestion is to do whatever you're most interested in wanting to create! Both 2D and 3D have their own sets of learning curves and problems to overcome. There is no 'best path'. So long as you're shooting towards your end goal, and having fun along the way, you're most likely going to be successful. 👍
Thanks a lot your comment boosted my confidence I didn't expect that you will give reply to my comment but literally your every word motivated me
I will give my best
You are best youtuber I got ever
Thanks a lot 😊😊😊😊
helpful video but my sprite slowly slides in the x,y,z directions when stopped on a ramp.
Hmmm, that shouldn't be possible. If you can hop in the discord, we can help you! :)
im a little late but what is the name of the first game , you showed to explain ?( the part where the u rotate)
Thanks for watching! That was just the project I was using for my UI videos! 😂
@@ThatOneUnityDevi could’ve sworn there was a game like it somewhere on the playstation.. like seriously i’m pretty sure i saw a game exactly like it i even thought of some level designs for the game a couple days ago so i know it existed
@@Antonwalnuts Oh, my bad. I was confused, the name of that game is called fez
I am currently working on a 2.5d project like this video and struggling with enemy and combat in this kind of 2.5d environment. I try to use the nav mesh agent be my enemy Ai but it turns out to be kind of bad and I don’t know what I can adjust. Even after searching online there seems to be little information about this kind of enemy AI. Can you give me some advice or hint?
You are definitely on the right track! For 3D typically a navmesh is used to define 'walk-able' areas, and have waypoints for the agent to go to.
Creating complex AI is actually incredibly difficult. My suggestion is to try and create a basic 'idle', 'chase' AI. So your enemy is idle by default, until something happens (he sees you, you get in a radius, etc.), then make it chase you for a certain amount of time, before going back to an idle state.
If it seems your Navmesh isn't cooperating with your terrain, you could always be a little sneaky, and use some basic primitives to get the rough layout of the map, turn them invisible, and then make the navmesh based on that instead.
@ThatOneUnityDev ok, but what if I have multiple slime chasing and want to attack me? Because it is 2.5D, and the enemy is using a navmesh agent to find the nearest path to the player. What if the enemy goes behind or in front of the player but instead the right or left side of the player . I have no idea how to make this kind of non range attack look good.
@@user-qd6wj2ri6w Those are very good questions. Usually something like that would be handled via code. You would tell the agent, he can't go in front or behind the player. Which is a lot easier said then done.
A sneaky way off the top of my head, that requires no code, is to add dynamic obstacles as a child of the player. Again, I haven't tried it yet, but it might be a painless solution to your issue!
As a last resort, you might also want to look into A* pathfinding, and ditch the navmesh all together. Either way, i'm sure you can come up with a solution! Hopefully I helped! Let me know how it goes!
@ThatOneUnityDev Thank you. I will try the dynamic obstacles and see if that works!
@ThatOneUnityDev So after I try to add two child objects with navmesh obstacles at the front and back of my player ,there is a problem that I can push the enemy with these obstacles while I am moving.
How u model this litle house? for me its to complex, shoud you make a tutorial :(
At around the 4:35 mark I go over how I made it! I know I kinda rushed that part, but it's just basic 3D modeling. I will have to make a more detailed tutorial in the future! :)
Hi, thanks for this awesome tutorial! I am a newbie in game dev, right now I have a problem with the script(or maybe not), the problem is when I start to play the game my character can do a flip when I press A/D which means it simulates the movement on right & left, but it stuck on the same position and just can't move🤒, do you have any ideas what may make this happen? Thankyou!!! update: just realized I need to disable the Freeze Position from Player>Rigidbody LOL
Haha, no worries! Glad you got it all sorted out! :)
I'm having the same issue and I'm using the constraints in Rigidbody but it's not working, what was the solution? Update: Nevermind I got it, I'm trying to combine this tutorial with CodeMonkeys which uses transform instead, so i ended up locking the rotation in update, not sure if this is resource intensive though.
Can you make one on how to make a top down version similar to eastward / sea of stars wheee it looks more 2d and not 2.5d ?
It's the exact same, except with top down art. 😅
Do i have to use 3D (URP) or could I just do 2D and somehow make it into 3D?
You could do that, or you could even use no rp. BUT, I highly suggest not starting in 2D if you can help it. If your making something similar to what I did in the video, the only sprites in the scene are essentially the player/npc sprites. There would be 0 benefit of using a project configured for 2D, as this is basically a 3D game.
👏👏👏💪💪💪
Isn't it better to use 3D characters on 2D world so characters can have easier time changing clothes or weapons? Also modular In rigs u can reuse.
While 3D characters in a 2D world have various benefits, it can also have many drawbacks as well. Nevertheless, It would create a very different effect than what you're seeing in this video.
@@ThatOneUnityDev would you do a video on that topic? I find making low poly characters is easier than making sprite sheets. So just trying to make things with what I am good with. It's quite a lonely road.
I can’t move my character at all, do you know what the problem might be?
It could be a number of things. Do you have a rigidboy2d on it? Perhaps your terrain collider, and player collider have you stuck in the ground? Check your rigidbody2d constraints, and make sure they match.
@@ThatOneUnityDev I do have two console errors that I don’t know how to fix which might be the problem
“You are trying to read input using the unityEngine.input class, but you have switched active input handling to input system package in player settings. player controller.Update () (at asset/ player controller.cs:36)”
@Slufrg Sfdsvjg oh okay. So my script uses the old input system, but you are using the new input system. You could either update my code to the new system, or revert back to the old one. Which is in project settings-> player->active input settings
@@ThatOneUnityDev thank you I was finally able to get it to work, you’re very kind I appreciate the help
@Slufrg Sfdsvjg No worries! Glad to help! :)
please dont stop posting
Haha, thank you, I won't! :)
Amazing tutorial! Could you do more regarding 2.5d? It’s so hard finding reliable vids like this 🫡
Thank you so much for the kind words! I am working on one as we speak! :)
Never do moves in Update. Only FixedUpdate.
She should have been a Brick House.
your tutorials are the best thank you for blessing me with your knowledge 🫶
Haha, thank you for watching, and the kind words! I appreciate you! :)
when i try to animate it, my character just falls through the floor
Sorry to hear, try to make sure you have everything setup properly in the inspector!