3:40 I spend so much hours with copie every sprite seperatly into one sprite animation, now i realize how far I could be with my project if i just knew that trick
One of the best tutorials I've seen! Lots of helpful info, and you take time to explain things step by step without assuming much prior knowledge. That really helps me understand the concepts a lot more clearly. I also appreciate how you showed us what the game looks like before the code is technically finished; seeing how the character would be stuck in an animation, or not turn around, helps show what code does and does not do, which makes it very clear how it works. Most tutorials tell you all the code until it works how they want, then show you what the final product looks like; but this way teaches much more effectively imo. Instant sub, thanks and God bless!!
9:55 ay if you notice your images are off like you move right and left fix the orgin in the sprite art itself each thing like , run, jump, act, ect need all the same orgin with the same sprite canvas size if it's off when you go left and right the image looks way off and broken
dude thanks and the idea that you to put the picture on top of the other one is like the old thing where you flip the book but i was trying to find the answer for like ten minutes and it would not do it. thanks again and one more sub. also i have an idea you can have. a game with an overlay only let you replace art in objects and change position of stuff. then you are allowed to lay it out and sell it like regular game to people who draw only. you will get lots of art friends.
I’d have to see your entire code to know the issue. It sounds like you’re either missing a ) or } somewhere. When you use ord, it’s a function so you have to close that call with ). if(keyboard_check(ord(“d”))) { } Notice there’s 3 ) at the end of the if statement.
ok but i have a question what if i want to add an sprites for an 2.5D game for example (undertale) can you please tell me how i will do that and btw you tutorial is amazing
When I auto trim all frames in the sprWarriorRun sprite sheet workflow it trims to the content of all frames instead each frame individually. I made a new project and reset settings to default, but no dice. Any ideas?
So the left and right works wonders but when I try to do up and down movement it messes up and I have tried many different ways but the problem is I can't replicate the same code for up and down since the sprite does not flip when moving up and down it uses two different sprites. an up moving sprite and a down moving sprite. Can I get some help on this?
Sprite_index controls the sprite an object displays. You have to change your sprite when moving up and down. So when you check for the up key, also change your sprite to move_up or whatever your sprite is called. You’ll need this for every direction you can move.
@@LetsLearnThisTogether so do I copy paste a new If, else if, else. code and change it to be up and down I already replaced the images to be up and down but it keeps defaulting to the else section so they move up and down but they dont animate o.o I am very new sorry.
@@LetsLearnThisTogether oh I got it all to move and animate but now they all default to the right side. Where do I add the other Else function so they stop moving and idle in the last facing direction?
Else goes at the very end of it statements. I’d need to see your code to know for sure, but if you’re set up like if (left) else if (right) Etc.. Then set else at the very end and stop moving there. Otherwise you’ll need an if to check for when you are standing still and set to idle then.
Up and down are two different sprite artwork in any game even jumping they will have u use 1 sprite for going up and another sprite for coming down so it will be different but if in placement make sure your orgin and canvas size are the same to keep it overall center
Nice... If you wanted, you could do a video about costum animations... Its the principal thing that gm is missing... there is no timeSet for each individual frame...reuse repeated frames... and other things... With the V2.3 making costum animations, is almost instant and very easy...
Thank you very much, this is super helpful! The thing is, I'm trying to make a side-scrolling game where the character is moving in all eight directions, but when I tweaked the Y movements, the X ones wouldn't animate the running sprites. I've got zero experience in programming so I went with these codes which I thought would work based on my logic (which is definitely flawed lol): if (keyboard_check(vk_right)) { x += 3; sprite_index = sprRogueRun; image_xscale = 1; } else if (keyboard_check(vk_left)) { x -= 3; sprite_index = sprRogueRun; image_xscale = -1; } if (keyboard_check(vk_down)) { y += 3; sprite_index = sprRogueRun; } else if (keyboard_check(vk_up)) { y -= 3; sprite_index = sprRogueRun; } else { sprite_index = sprRogueIdle; } Obviously I'm missing something, so could you please enlighten me? Thanks! Edit: After a couple of minutes typing up stuff I accidentally fixed it LOL
Is there any way I can have the last frame of my falling animation freeze until my character reaches the ground ? Here’s the code if it helps: if (jump) { yspeed = -20; } } else { sprite_index = sPlayerJump;
You certainly can. You need to know the specific frame number you want, and then in your code you can say something like if (falling and image_index >= lastFrame) { image_index = lastFrame } Or something close to that effect. If it’s a fast animation, you may need to add the at animation end event and freeze the image_speed right there.
Hi dummy question here. Is there a particular reason why my sprite kinda teleports or jiggles between left and right presses? Edit: he actually explains it. It has something to do with origin. if keyboard_check(vk_right) or keyboard_check(ord("D")){ x += 3 sprite_index = Sprite_Runmain; image_xscale = 1; } else if keyboard_check(vk_left) or keyboard_check(ord("A")){ x -= 3 sprite_index = Sprite_Runmain; image_xscale = -1; } else { sprite_index = Sprite_Idlemain; }
ERROR in action number 1 of Step Event0 for object ObjBlob: Variable .If(100005, -2147483648) not set before reading it. at gml_Object_ObjBlob_Step_0 (line 2) - If (keyboard_check(vk_right)) { gml_Object_ObjBlob_Step_0 (line 2)
Would you feel like making tutorials using the DnD and explaining it? :D idk i learn well from videos and this and your old version of this helped me make my first movable sprite :D
If you’re looking for DND, check out fire jump. It’s all drag and drop, and I did the videos for YoYo. I’ll also be doing some more content featuring DND, so stay tuned!
@@LetsLearnThisTogether can you explain how to make the sprite walk slower when walking in a angle 📐 by pressing like up and right at same time. Walking at angle makes sprite walk faster then normal walk speed.
The reason your object goes faster is because you’ve got two statements triggering at the same time, doubling the speed. If you add an if check for both keys and then set speed to normal, instead of doubled. I know I’ve seen some content on here addressing it in a better way, so search and I’m sure you can find it
It’s most likely a very small difference, usually a + instead of a - inside of a while loop. Delete your code, or comment it out, and try typing it out again while following along
@@LetsLearnThisTogether I ended up fixing it by programming the movement seperately and it ended up working, I couldn't figure out what exactly went wrong with this one. Thanks for the answer though!!! Your tutorials are seriously amazing
They’re pretty cool, that’s for sure ;) Change the sprite when you press a key to jumping, and then when gravity begins taking you to the ground, change the sprite again. There should be places for that logic in your game already and you just need to add in the sprite changes.
I mean, yeah, it made my character go, but it would have been nice to explained the "if" or the "else if" parts better. you kinda just do it, and not explain WHY you did that. Makes the tutorial very inflexible. Ive never coded before, and I have 0 clue why you did any of that, in that specific order.
This isn’t a great spot to start if you’ve no coding experience. I’ve got beginner courses on my site and beginner tutorials on her. I know the desire to create something specific and cool when you’re starting out, but you need the basics down first before you try that.
Because if he made the tutorial understandable for very begginers in coding, the video would end being 1 hour long (minimum). Btw: if you still don't know the basics of programming, you should start with logic. Example: if a == b, then a = 10; it would help you so much
Doesn’t type the right words, can’t answer. But seriously. If something didn’t work, let me know and I can offer some assistance. Just gotta tell me what didn’t work for you.
@@LetsLearnThisTogether you suspected everyone already was this far, so the people that dident have the files or dident now where they were, just got left behind.
I CANT MAKE IT WORK. HERE IS THE ERROR, CAN ANYONE HELP PLZ ___________________________________________ ############################################################################################ ERROR in action number 1 of Create Event for object oEnemy: Variable .path0(100003, -2147483648) not set before reading it. at gml_Object_oEnemy_Create_0 (line 1) - path_start(path0,global.speed,0,1); ############################################################################################ gml_Object_oEnemy_Create_0 (line 1) gml_Object_oSpawn_Alarm_0 (line 2)
Nice job ! and thank you for use my sprite !
3:40 I spend so much hours with copie every sprite seperatly into one sprite animation, now i realize how far I could be with my project if i just knew that trick
One of the best tutorials I've seen! Lots of helpful info, and you take time to explain things step by step without assuming much prior knowledge. That really helps me understand the concepts a lot more clearly. I also appreciate how you showed us what the game looks like before the code is technically finished; seeing how the character would be stuck in an animation, or not turn around, helps show what code does and does not do, which makes it very clear how it works. Most tutorials tell you all the code until it works how they want, then show you what the final product looks like; but this way teaches much more effectively imo. Instant sub, thanks and God bless!!
9:55 ay if you notice your images are off like you move right and left fix the orgin in the sprite art itself each thing like , run, jump, act, ect need all the same orgin with the same sprite canvas size if it's off when you go left and right the image looks way off and broken
best tutorial, straight to the point imo
I finally got my character to move correct! THANK YOU. Bless your soul.
Excellent tutorial for a clean animation code, thank you.
Someone who took the time to cover something and not try to do a speed run! Thank you for the video and on the well-earned sub.
super useful, thank you!
Drag and drop doesn't work for me
You should put a link to the creator of the spritesheet you used in the description.
Yes, yes I should.
@@LetsLearnThisTogether More than saying yes. it would be better to just paste the link.
@@DanielAlvarez-oq8ex lol true
dude thanks and the idea that you to put the picture on top of the other one is like the old thing where you flip the book but i was trying to find the answer for like ten minutes and it would not do it. thanks again and one more sub. also i have an idea you can have. a game with an overlay only let you replace art in objects and change position of stuff. then you are allowed to lay it out and sell it like regular game to people who draw only. you will get lots of art friends.
Nice tutorial
Thank you, you help me!!
instead of (vk_right), is there a way to have it for the "d" key instead?
Sure. ord(“D”)
You can also bind keys to one another so you could have it be for vk_right and D with just one check instead of 2.
@@LetsLearnThisTogether Thank you so much! My computer actually doesn't have arrow keys. 😅
@@LetsLearnThisTogether hi again, sorry to bother. It keeps giving me an error with the "{" and "}", it says, " Got "{" inspected "(" "
I’d have to see your entire code to know the issue. It sounds like you’re either missing a ) or } somewhere. When you use ord, it’s a function so you have to close that call with ).
if(keyboard_check(ord(“d”))) {
}
Notice there’s 3 ) at the end of the if statement.
@@LetsLearnThisTogether Tysm! It worked, sorry for bothering you so much
ok but i have a question what if i want to add an sprites for an 2.5D game for example (undertale) can you please tell me how i will do that and btw you tutorial is amazing
Same concept. For top down, you’ll just add movement for up and down.
ok thanks
When I auto trim all frames in the sprWarriorRun sprite sheet workflow it trims to the content of all frames instead each frame individually. I made a new project and reset settings to default, but no dice. Any ideas?
You must first convert the sheet to frames, it’s in the same menu, above the auto trim feature a few items. Convert to frames, then trim.
7:44 do we have DnD version
So the left and right works wonders but when I try to do up and down movement it messes up and I have tried many different ways but the problem is I can't replicate the same code for up and down since the sprite does not flip when moving up and down it uses two different sprites. an up moving sprite and a down moving sprite. Can I get some help on this?
Sprite_index controls the sprite an object displays. You have to change your sprite when moving up and down. So when you check for the up key, also change your sprite to move_up or whatever your sprite is called. You’ll need this for every direction you can move.
@@LetsLearnThisTogether so do I copy paste a new If, else if, else. code and change it to be up and down I already replaced the images to be up and down but it keeps defaulting to the else section so they move up and down but they dont animate o.o I am very new sorry.
@@LetsLearnThisTogether oh I got it all to move and animate but now they all default to the right side. Where do I add the other Else function so they stop moving and idle in the last facing direction?
Else goes at the very end of it statements. I’d need to see your code to know for sure, but if you’re set up like
if (left)
else if (right)
Etc..
Then set else at the very end and stop moving there.
Otherwise you’ll need an if to check for when you are standing still and set to idle then.
Up and down are two different sprite artwork in any game even jumping they will have u use 1 sprite for going up and another sprite for coming down so it will be different but if in placement make sure your orgin and canvas size are the same to keep it overall center
Nice... If you wanted, you could do a video about costum animations... Its the principal thing that gm is missing... there is no timeSet for each individual frame...reuse repeated frames... and other things...
With the V2.3 making costum animations, is almost instant and very easy...
//script animations
function AnimCreate()
{
var array = array_create(0);
return array;
}
function AnimAddGrame( animName, spriteName, imageIndexNumber, ImageDelay )
{
var animPass = variable_instance_get(id, animName);
var arrNum = array_length(animPass);
array_resize(animPass, array_length(animPass)+1);
animPass[arrNum] =
{
Coord1: { sprINDEX: spriteName, imgINDEX: imageIndexNumber, aDELAY: ImageDelay }
}
variable_instance_set(id,animName, animPass );
}
function AnimPLAY(animName)
{
static delay2 = 0;
static delay1 = animName[delay2].Coord1.aDELAY;
if ( delay1 > 0 )
{
delay1 -= room_speed /30;
if ( delay1 = array_length(animName) )
{
delay2 = 0;
}
}
}
sprite_index = animName[delay2].Coord1.sprINDEX;
image_index = animName[delay2].Coord1.imgINDEX;
}
I’ll look into it.
Thank you very much, this is super helpful!
The thing is, I'm trying to make a side-scrolling game where the character is moving in all eight directions, but when I tweaked the Y movements, the X ones wouldn't animate the running sprites. I've got zero experience in programming so I went with these codes which I thought would work based on my logic (which is definitely flawed lol):
if (keyboard_check(vk_right)) {
x += 3;
sprite_index = sprRogueRun;
image_xscale = 1;
}
else if (keyboard_check(vk_left)) {
x -= 3;
sprite_index = sprRogueRun;
image_xscale = -1;
}
if (keyboard_check(vk_down)) {
y += 3;
sprite_index = sprRogueRun;
}
else if (keyboard_check(vk_up)) {
y -= 3;
sprite_index = sprRogueRun;
}
else {
sprite_index = sprRogueIdle;
}
Obviously I'm missing something, so could you please enlighten me? Thanks!
Edit: After a couple of minutes typing up stuff I accidentally fixed it LOL
How did you fix it
how do you make the background, any tutorial for that
anyone know how to stop the blurry - ness when moving ?
Is there any way I can have the last frame of my falling animation freeze until my character reaches the ground ? Here’s the code if it helps:
if (jump) {
yspeed = -20;
}
} else {
sprite_index = sPlayerJump;
You certainly can. You need to know the specific frame number you want, and then in your code you can say something like
if (falling and image_index >= lastFrame) {
image_index = lastFrame
}
Or something close to that effect. If it’s a fast animation, you may need to add the at animation end event and freeze the image_speed right there.
Hi dummy question here. Is there a particular reason why my sprite kinda teleports or jiggles between left and right presses?
Edit: he actually explains it. It has something to do with origin.
if keyboard_check(vk_right) or keyboard_check(ord("D")){
x += 3
sprite_index = Sprite_Runmain;
image_xscale = 1;
}
else if keyboard_check(vk_left) or keyboard_check(ord("A")){
x -= 3
sprite_index = Sprite_Runmain;
image_xscale = -1;
}
else {
sprite_index = Sprite_Idlemain;
}
How do i import an animation from my other device??
How to do from walking to running. I've a code that I made but I don know what is not working
When i drag my object in the level. It gives an error when i try and test it
What error?
ERROR in
action number 1
of Step Event0
for object ObjBlob:
Variable .If(100005, -2147483648) not set before reading it.
at gml_Object_ObjBlob_Step_0 (line 2) - If (keyboard_check(vk_right)) {
gml_Object_ObjBlob_Step_0 (line 2)
It looks like you capitalized your i in If. It must not be capital.
@@LetsLearnThisTogether Thank you so much! It worked!
my character is only staying in its idle state despite i copied everything you said to doplz help me
Would you feel like making tutorials using the DnD and explaining it? :D idk i learn well from videos and this and your old version of this helped me make my first movable sprite :D
If you’re looking for DND, check out fire jump. It’s all drag and drop, and I did the videos for YoYo.
I’ll also be doing some more content featuring DND, so stay tuned!
@@LetsLearnThisTogether can you explain how to make the sprite walk slower when walking in a angle 📐 by pressing like up and right at same time. Walking at angle makes sprite walk faster then normal walk speed.
The reason your object goes faster is because you’ve got two statements triggering at the same time, doubling the speed.
If you add an if check for both keys and then set speed to normal, instead of doubled. I know I’ve seen some content on here addressing it in a better way, so search and I’m sure you can find it
When I run the code, my room canvas is really small, how do I fix this?
i've got the exact code but when my character walks into a wall they just phase through it and dont know why
It’s most likely a very small difference, usually a + instead of a - inside of a while loop. Delete your code, or comment it out, and try typing it out again while following along
How do I get to that first part?
My assets dont want to drag and drop is it because I have the free version ?
where to find the sprites for this tutorial ?
weird i basically copied the code on screen yet my character would only go right, despite being animated the exact way I want them to
Double check your addition and subtraction. And that you really added code to your left move event. One tiny + where a - should be will cause issues.
@@LetsLearnThisTogether I ended up fixing it by programming the movement seperately and it ended up working, I couldn't figure out what exactly went wrong with this one. Thanks for the answer though!!! Your tutorials are seriously amazing
thabks
i've never seen such a good gamemaker explanation
edit: @LetsLearnThisTogether it only plays the first frame of the animation can you help me
what about jump animations
They’re pretty cool, that’s for sure ;)
Change the sprite when you press a key to jumping, and then when gravity begins taking you to the ground, change the sprite again. There should be places for that logic in your game already and you just need to add in the sprite changes.
69th comment nice
Radical dude!
my image arguments just dont work
Monkey errrrrdddddddd
I mean, yeah, it made my character go, but it would have been nice to explained the "if" or the "else if" parts better. you kinda just do it, and not explain WHY you did that. Makes the tutorial very inflexible. Ive never coded before, and I have 0 clue why you did any of that, in that specific order.
This isn’t a great spot to start if you’ve no coding experience. I’ve got beginner courses on my site and beginner tutorials on her. I know the desire to create something specific and cool when you’re starting out, but you need the basics down first before you try that.
Because if he made the tutorial understandable for very begginers in coding, the video would end being 1 hour long (minimum). Btw: if you still don't know the basics of programming, you should start with logic. Example: if a == b, then a = 10; it would help you so much
doesent work, he doesent go into detail what a bad tutorial.
Doesn’t type the right words, can’t answer.
But seriously. If something didn’t work, let me know and I can offer some assistance. Just gotta tell me what didn’t work for you.
@@LetsLearnThisTogether you suspected everyone already was this far, so the people that dident have the files or dident now where they were, just got left behind.
I CANT MAKE IT WORK. HERE IS THE ERROR, CAN ANYONE HELP PLZ
___________________________________________
############################################################################################
ERROR in action number 1
of Create Event for object oEnemy:
Variable .path0(100003, -2147483648) not set before reading it.
at gml_Object_oEnemy_Create_0 (line 1) - path_start(path0,global.speed,0,1);
############################################################################################
gml_Object_oEnemy_Create_0 (line 1)
gml_Object_oSpawn_Alarm_0 (line 2)