link to the full series: kzbin.info/aero/PL3cGrGHvkwn0zoGLoGorwvGj6dHCjLaGd
@legendhowl Жыл бұрын
how did u split the sprite sheet
@aynonms Жыл бұрын
@@legendhowl 6/10
@legendhowl Жыл бұрын
@@aynonms wdym
@aynonms Жыл бұрын
@@legendhowl 6 vertical, 10 horizontal
@legendhowl Жыл бұрын
ik but it becomes blurry for me
@Marandal Жыл бұрын
i am a refugee from Unity. Thank you dev-worm for this tutorial! I really appreciate your in-depth explanations of what things do and how they operate.
@dev-worm Жыл бұрын
Glad it could help!
@idontknoq4813 Жыл бұрын
I'm also a refugee. Thanks for the tutorial.
@Vocodedvoice Жыл бұрын
Same
@1997AlexB Жыл бұрын
Godot welcomes refugees of all nations!
@enderpig9911 ай бұрын
@@1997AlexB im an unreal refugee it was tough😥
@microwire007 Жыл бұрын
Just saying "Hi" to all the other new Godot users who have jumped ship in the past couple of days. I only just started learning game development about 4 weeks ago on Unity, I'm thinking now is a good time to focus on a different tool.
@Diertstarr Жыл бұрын
Unity refugee here; starting the toots - so far so good - no problems, easy to pick up. Thank man! See ya in the next one!
@ilguardiano8718 Жыл бұрын
the legend is back, more powerful than before
@SkillSage-p3r Жыл бұрын
to move the player you could use this instead of the huge amount of if statements:- const SPEED = 100 var direction : Vector2 = Vector2.ZERO func _physics_process(delta): direction = Input.get_vector("left", "right", "up", "down") if direction: velocity = direction * SPEED else: velocity = Vector2.ZERO move_and_slide() it works the same.
@doublecc623411 ай бұрын
How would you implement the animation code into the character movement code?
@SkillSage-p3r11 ай бұрын
@@doublecc6234 I used Animationtree, I learned the way from this video it is very helpful, kzbin.info/www/bejne/jaOwgIWwoZiaZ7cfeature=shared Animationtree make things more simpler and easy.
@TheEndTimes1017 ай бұрын
The issue with this code is it adds diagonal movement if the player hits left and right at the same time. Diagonal movement in itself is not a bad thing but you will need new animations and more code to get it working. His code keeps that out and it fits top down feel better. Not saying there's not a better way.
@SkillSage-p3r7 ай бұрын
@@TheEndTimes101 yeah to fix it add . normalized here direction = Input.get_vector("left", "right", "up", "down"). normalized and it should be fixed.
@CozyThreadsAU4 ай бұрын
The other code wasn't working for me but this is. Thanks!
@qmerk26616 ай бұрын
first off, im loving the tutorial so far. im already on ep. 4 but i figured id ask this here. i am pretty new to game dev and godot. so im pretty sure this is not the best way to go about this but id rather have my character have diagonal movement as well so i changed the code under the func player_movement(delta) part to func player_movement(delta): if Input.get_action_strength("Move_right"): play_anim(1) current_dir = "right" elif Input.get_action_strength("Move_Left"): play_anim(1) current_dir = "left" elif Input.get_action_strength("Move_Down"): play_anim(1) current_dir = "down" elif Input.get_action_strength("Move_Up"): play_anim(1) current_dir = "up" else: play_anim(0) var input_vector = Vector2.ZERO input_vector.x = Input.get_action_strength("Move_right") - Input.get_action_strength("Move_Left") input_vector.y = Input.get_action_strength("Move_Down") - Input.get_action_strength("Move_Up") input_vector = input_vector.normalized() if input_vector: velocity = input_vector * speed else: velocity = input_vector move_and_slide() now heres the thing. this took me forever to try to figure out (because im new to this stuff) but everything works as i wanted it to, and im happy about it, and honestly proud of myself for getting it to work at all lol. but im just gonna ask anyone that may know more then i do, if i did something wrong here that may bite me in the butt later on. im not asking for some nit picky answer just so you can try to flex your knowledge with an advanced answer, im only asking if, for me(a beginner thats just gonna use this tutorial to have a project to practice learning with(kinda like a starting template)) if this is a BASIC way to do this, and if its fine or not. thank you in advance
@aintnico4 ай бұрын
Thank you, i was searching for this, saw so many tutorials i was going to just go with it
@lithium14974 ай бұрын
Beginner here myself, always look at the comments of the Video. Somewhere below user @sashabellor4344 posted a script below, but it was missing a line in the func _physics section, will copy below the correct code that worked for me after I fixed it up. @export var speed = 100 func _physics_process(_delta): var direction = Input.get_vector("left", "right", "up", "down") velocity = direction * speed move_and_slide() Voila, simple as that.. Just make sure to go into your Project > Project Settings > Input Map > Bind your keys "left" "right" "up" "down" to each separate Arrow/WASD, or the script will launch like 1000 errors a second looking for un-mapped buttons. Good luck sir, I was getting frustrated because the code in the video wasn't working properly either, and the previous comment from Sasha was slightly off, as when I tried func _physics_process(delta) It would debug an error saying it required a _delta .. hence, func _physics_process(_delta): and for some reason this no longer spits out any debug issues + works in all 8 directions.... 4 hours later RIP Saturday Night. Edit: After hours of frustration, this was all scrapped and followed the original tutorial, getting the animations to work was such a pain, I am sticking to what is shown to us.
@brakefox51064 ай бұрын
@@lithium1497 Thx bro! You helped me. Hi from Brazil.
@lithium14974 ай бұрын
@@brakefox5106 You are very welcome! Much love from Canada
@LoganSie Жыл бұрын
As someone who is new to coding in general and godot, this tutorial is beyond amazing! It would be great if your future videos you made mechanics which we could simply add and expand on. Will continue to watch this series and the rest of your videos because i feel there isn't as much resources for godot 4 in terms of learning and this video alone is very inspiring! Thanks!❤
@dev-worm Жыл бұрын
so glad to hear that, im working on some really exciting tutorials right now
@Makiyes-gaming Жыл бұрын
Just as a tip if your animation doesn’t work after all the code make sure the animated sprite is a child of the player and not the collision box
@mohamedbennasroune7633 Жыл бұрын
BRO U SAVED MY DAY FR I WAS WONDERING FOR HOURS WTF WAS I DOING WRONG THANK YOU SO MUCH
@gripychipy9 ай бұрын
Thanks
@ValentineInWonderland7 ай бұрын
Bro my character literally doesn't show up at all 😭 not sure what I did wrong tho, because I literally followed this exactly
@jeremiahhoney6507 ай бұрын
@@ValentineInWonderland same all I get is grey screen
@themaplerunner39943 ай бұрын
thank you so much
@Boerke4 ай бұрын
I usually favor reading over videos for learning new things, but the main benefit of video in learning game development is that you can match results much better. The problem arises when stuff doesn't work, and you have to keep scrolling for that tiny step you missed or did in another way. I created the script using the asset tree, by right-clicking the scripts folder and adding the script. This doesn't attach the script to the CharacterBody2D node. After about half an hour of scrolling through the video, I finally noticed in the inspector that no script was attached, so I simply attached it there and it worked. Turns out I missed the click on the attach script button in the video. Thanks for the series, it's going to be a fun one.
@armyofchickens6062 Жыл бұрын
At 19:30, Instead of the ready function with the animation, inside of the animated sprite 2d you can set an animation to be the default when it starts, saves some coding
@davidbouman8928 Жыл бұрын
but with the ready function you can have multiple different start animations for different scenes, i.e. if you want the character to start facing the right in a boss fight.
@abnorth22763 ай бұрын
Good tip for people who don't want to flip the sprite to make it go left and right (so for example you have a dedicated sprite for left and right): You can just remove the lines that say anim.flip_h = true/false on the last if statements in the player script and then type in your own animation where it otherwise would be "side_walk" and "side_idle" respectively. It worked great. Awesome tutorial.
@ggatooc7031Ай бұрын
legendary yt channel, been starting gamedev and your tutorials are so good as they explain everything we want to know and implement in our games. keep going!
@dev-wormАй бұрын
I am so happy to hear that!! if you have any questions at all throughout the way feel free to let me know!
@ericspeak6110 Жыл бұрын
THANK YOU for the work that your doing, this channel right now is the reason I havent given up again on my dream. Thank you,
@dev-worm Жыл бұрын
Glad to hear it, Im wishing you the best and I cant wait to see your finial game!
@missharley2118 Жыл бұрын
So much better and faster than the outdated one I spent all day trying to debug, THANK YOU SO DAMN MUCH. I do need to learn how to type faster though, you type so quick I have to keep pausing and rewinding to pause it haha!
@deadjuice18809 ай бұрын
Learning from watching is tough and slow. A few good tips: Watch the video first. Then follow along after. Observe, take in what you can, and then go along with it. You're here to learn, but you can get stuck in a mental trap by following instructions, and not having time to understand. Also, put it to like 0x75 speed with the gear icon in KZbin. Good stuff to learn here, but also, the instructor moves way too fast, while you are trying to follow. No fault on them or you, this is a great series of tutorials, and there is a lot to be learned here.
@ninjacodertech2 ай бұрын
rewatching this series for the 2nd time after half a year for a new game project idea! thanks!
@gonzaloramirez3261 Жыл бұрын
Thank you from Argentina, this video is of great help to me as I start a project I have in mind. It's undoubtedly a huge advantage to have this! Greetings.
@dev-worm Жыл бұрын
so glad to hear that!
@tomoyaokazaki21388 ай бұрын
dude, i like how much you covered in this one video. I also had my doubts tbh with how the animation was coded in, but it worked perfectly on my end like it did on your end! Whenever that happens, you know it's an amazing tutorial. I can't wait to watch your other tutorial videos for this series!
@dev-worm8 ай бұрын
goodluck in the rest of the series!! thanks!! if you ever need anything then please let me know!
@sashabellor43446 ай бұрын
With Godot 4 there's a shortcut to 2d Topdown player movement! @export var speed = 100 func _physics(delta): var direction = Input.get_vector("left", "right", "up", "down") velocity = direction * speed move_and_slide() ("left", "right", "up", "down" = defined inputs created in my input map) That's it and your character will move in 8 directions!
@dev-worm6 ай бұрын
thank you! i’m sure this can help so many!
@hansuswurstus8884 ай бұрын
also we can remove anim.flip_h when moving up and down due to different sprites that don't need to be flipped.
@PoloKid3 ай бұрын
You beauty!
@BryanKyzarАй бұрын
This is the best method! thanks for sharing! I needed to change "func _physics(delta):" to "func _physics_process(delta):" for it to work.
@randykeith1203 Жыл бұрын
I followed your directions to the letter until 12:28 but I don't see my character on screen at all in the debug edit: for some reason the scene was on world and not player but still cannot move my character in debug
@narrow_way1211 ай бұрын
same
@Picksol11 ай бұрын
If you still haven't fixed your non-moving character it may be because your input system for "ui_right" etc. only using the arrow keys, you need to put in the WASD movement yourself by going to Project --> Project Settings --> Input System (in the tab bar) --> Then putting them in for each of the ui_right ui_left. If that didn't fix it, you may not have move_and_slide() or not calling the method he made in process, or you may not have made the script differently from him and that made it not attached to the player
@corrinflakes965921 күн бұрын
Also, scaling comes up shortly after, which solved mine, my guy was too tiny.
@degariuslozak2169 Жыл бұрын
So hard to find good quality tutorials for Godot 4,glad I found this one. Although for some reason if I use "delta" in the player movement function,no movement works whereas if I remove it,it works. Edit: for some reason,Godot didn't attach the script the player node. Idk how that happened,lol. all fixed now
@Yinithyn Жыл бұрын
How did you fix it? I think I'm having the same problem.
@chase7767 Жыл бұрын
I drank each time he says "right" and died of alcohol poisoning at 13:32
@mathislalonde35310 ай бұрын
you killed me 😂😭
@AndrewisnotedibleАй бұрын
still thinking about this comment almost a year later. lmao
@sanitycheck574 Жыл бұрын
every godot4 tutorial maker is a hero!!!!!!!!!!!!!!
@JayTohab8 ай бұрын
While the game I want to make isn't from this genre, this is still good practice for me to get used to working with Godot! Thanks!
@dev-worm8 ай бұрын
I completely agree with you!! goodluck!! let me know if you need anything at all!
@mooonchen4822Ай бұрын
Just use var input_direction = Input.get_vector("left", "right", "up", "down") velocity = input_direction * speed Way smoother :D
@kristianlavigne8270 Жыл бұрын
Pro tip: If you split it up into smaller functions such as move with move("left") and play_move with play_move("left", "side") and so on you can vastly simplify the code, more readable, composable and much less duplication. if/else and nesting statements is the bane of software dev.
@billathonjohn10 ай бұрын
TYSM! I thought I was a failure when I tried this, because where it says func play_anim(movement): var dir = current_dir var anim = $CollisionShape2D/AnimatedSprite2D I forgot to write current_dir, which made the animation bug out and stop working! When I looked at it I smacked myself on my forehead and was satisfied with my sweet success! Thanks again and I will surely finish this tutorial in no time! You earned a sub ;)!
@dev-worm10 ай бұрын
thanks!! ahh i hate when something so small like that happens!! glad you could figure it out!!
@billathonjohn10 ай бұрын
your welcome!@@dev-worm
@mariamejia9369 ай бұрын
Thank You. Leaving a comment for youtube engagement. Would appreciate future videos digging deeper into learning the coding language if possible
@dev-worm9 ай бұрын
thanks man means the world! for sure!! looing into those types of tutorials now! thanks for the suggestion!
@mariamejia9369 ай бұрын
I'm so glad you appreciated my comment, I am always looking for learning actual code and even after buying books I never feel a concrete place to start, godot keeps me hopeful@@dev-worm
@BeardyRamblinGames2 ай бұрын
Really good. Well explained. Really new to Godot but used other engines, your explanation of the way the variables and functions interact in the GD script really helped and was well timed. Thanks man
@ragtimeragdoll78033 ай бұрын
At 12:25 my character doesn't appear on the screen and move around. I'm using my own sprite and it's bigger than your character sprite if that has anything to do with it. I copied down the code exactly so I don't know what to do
@Sugomaturu962 ай бұрын
yeah me too
@funmtg127211 ай бұрын
watched this video today and plan on watching the rest in the series. very helpful and informative.
@dev-worm11 ай бұрын
so happy to hear that! thank you, hope the rest of the series is helpful
@BigJim19768 ай бұрын
This was infact informative! I used to mess around in unity as a hobby years ago when I was a kid. Kinda dropped it because I just never knew what I really wanted to do with it, plus at that time I was used to writting in Java script, which did not translate well with the tutorials at the time. They were mostly wrote in C#, and trying to translate it to Java script when you barely knew code at all was rather difficult, lol. So I've been really wanting to get back into making some games for fun, and Godot seemed like a pretty good opportunity to do so, but I just couldn't figure out a good place to start. This video has atleast given me 1/2 a mind of what I'm trying to do, and how to do certain tasks, I will will follow the rest of this series with joy, and pleasure. Thank you good sir!
@dev-worm8 ай бұрын
thank you!! i believe Godot is the best place of anyone to get started with development! and Im wishing you only the best!! if you ever need anything then please let me know! ill be glad to help!
@General_Havoc Жыл бұрын
Hello! Just wondering if you could do a series on how to Create a Platformer in Godot 4. It would be really cool!
@Phaze_lovesrobloxАй бұрын
For some reason, my player just doesn’t move when I follow the script in 12:38 !
@corrinflakes965922 күн бұрын
My character didn't even show up on screen.
@AMINEI-wl9rk7 ай бұрын
extends CharacterBody2D const speed = 100 var current_dir = "none" func _ready(): $AnimatedSprite2D.play("front_idle") func _physics_process(delta): player_movement(delta) func player_movement(delta): if Input.is_action_pressed("ui_right"): current_dir = "right" play_anim(1) velocity.x = speed velocity.y = 0 elif Input.is_action_pressed("ui_left"): current_dir = "left" play_anim(1) velocity.x = -speed velocity.y = 0 elif Input.is_action_pressed("ui_down"): current_dir = "down" play_anim(1) velocity.y = speed velocity.x = 0 elif Input.is_action_pressed("ui_up"): current_dir = "up" play_anim(1) velocity.y = -speed velocity.x = 0 else: play_anim(0) velocity.x = 0 velocity.y = 0 move_and_slide() func play_anim(movement): var dir = current_dir var anim = $AnimatedSprite2D if dir == "right": anim.flip_h = false if movement == 1: anim.play("side_walk") elif movement == 0: anim.play("side_idle") if dir == "left": anim.flip_h = true if movement == 1: anim.play("side_walk") elif movement == 0: anim.play("side_idle") if dir == "down": anim.flip_h = true if movement == 1: anim.play("front_walk") elif movement == 0: anim.play("front_idle") if dir == "up": anim.flip_h = true if movement == 1: anim.play("back_walk") elif movement == 0: anim.play("back_idle")
@TrueFalses7 ай бұрын
thanks legend 👍
@connorburnett42457 ай бұрын
@@TrueFalses doesn't work for me the game crashes ever time i load it
@Wolfframe4 ай бұрын
Thank goodness it worked! Thank you, kind man! =)
@voidcatlingАй бұрын
works but side animations don't play for me (also how do diagonals?) edit nvm forgot I named my animations differently (still how do diagonals?)
@RM_3D4 ай бұрын
First time loading Godot. I don't know coding or Godot, i'm an environment artist usually use Unreal and have wanted to dabble in pixel games and this is the most straight forward tutorial i've found yet. I tried 4 or 5 others trying to get a character to move and they all had problems and wasn't clear. I understood the code and what it was trying to accomplish. Will definitely be swapping the sprite sheets for my own down the line but its nice to have a base to start from.
@dev-worm4 ай бұрын
I am so happy to hear that!! I am glad to help at anytime no matter what it is that you need!! So feel free to reach out!!
@RansomeColeman6 ай бұрын
Thanks for the tutorial! As someone old to coding but new to game dev going through the different features was very helpful. I spruced up the player_movement a bit to allow diagonals, sharing here in case others are interested. I started the current_dir a bit different as well with var current_dir = "down" func player_movement(delta): velocity.x = 0 velocity.y = 0 if Input.is_action_pressed("ui_down"): current_dir = "down" velocity.y += speed if Input.is_action_pressed("ui_up"): current_dir = "up" velocity.y -= speed if Input.is_action_pressed("ui_right"): current_dir = "right" velocity.x += speed if Input.is_action_pressed("ui_left"): current_dir = "left" velocity.x -= speed if velocity.x || velocity.y: play_anim(1) else: play_anim(0) move_and_slide()
@arcanerefrain6 ай бұрын
This was very helpful, thanks! I added a few lines of code right above the "if velocity.x || velocity.y:" line to fix the problem of diagonal movement being faster than straight movement: if velocity.x && velocity.y: velocity.x *= .71 velocity.y *= .71 I know the "correct" way to solve this problem is to use normalized vectors, but for simple 8-directional movement this is a quick fix that doesn't require reworking the existing code.
@dev-worm6 ай бұрын
code looks amazing!! good work!! thanks for sharing it for others as well!
@RansomeColeman6 ай бұрын
@arcanerefrain oh nice, I've read about the diagonal problem, appreciate the lookout!
@MonkeySense10 ай бұрын
i wrote the character movement code exactly the same, stopped the video to check, than checked again. every single line of code is marked as an error.
@rjyo12366 ай бұрын
Maybe your language is not the same as his
@DJMeowzart3 ай бұрын
I know it's an old message but it's always good to let us know the error message then someone here can actually help you.
@O7OF-0xFF9013 күн бұрын
extends CharacterBody2D # Movement speed var speed = 110 # Interaction range var interact_range = 50 # Custom velocity variable (renamed to avoid conflict with CharacterBody2D's velocity) var custom_velocity = Vector2() # Health of the player var health = 250 # Player starts with 100 health # Reference to the AnimatedSprite2D node (make sure this node exists in the player scene) @onready var animated_sprite = $AnimatedSprite2D # Make sure the node is named "AnimatedSprite2D" # State to check if the player is attacking var is_attacking = false func _ready(): pass func _process(_delta): handle_movement() handle_interaction() func handle_movement(): # If the player is attacking, don't process movement if is_attacking: return # Skip movement processing if attacking custom_velocity = Vector2() # Reset velocity each frame # Movement controls (WASD or Arrow keys) if Input.is_action_pressed("move_right"): custom_velocity.x += 1 if Input.is_action_pressed("move_left"): custom_velocity.x -= 1 if Input.is_action_pressed("move_down"): custom_velocity.y += 1 if Input.is_action_pressed("move_up"): custom_velocity.y -= 1 # Normalize velocity to prevent diagonal speed boost custom_velocity = custom_velocity.normalized() * speed # Apply the custom velocity to the CharacterBody2D's velocity velocity = custom_velocity move_and_slide() # Flip the sprite based on movement direction if custom_velocity.x > 0: animated_sprite.scale.x = 1 # Facing right elif custom_velocity.x < 0: animated_sprite.scale.x = -1 # Facing left # Handle animations when not attacking if custom_velocity.length() > 0: play_animation("move") # Play "move" animation if moving else: play_animation("idle") # Play "idle" animation if not moving func handle_interaction(): # Check for interaction when the player presses the 'F' key if Input.is_action_just_pressed("interact"): # 'F' key for interaction var interactable = get_closest_interactable() if interactable: interactable.start_dialogue() # Check for attack when the player presses the 'attack' key if Input.is_action_just_pressed("attack") and not is_attacking: # Prevent attack spam attack() # Get the closest NPC within the interaction range func get_closest_interactable(): var interactables = get_tree().get_nodes_in_group("interactables") var closest_interactable = null var closest_distance = interact_range for interactable in interactables: var distance = global_position.distance_to(interactable.global_position) if distance < closest_distance: closest_distance = distance closest_interactable = interactable return closest_interactable # Function to play an animation based on the current state func play_animation(animation_name: String): if animated_sprite.animation != animation_name: animated_sprite.play(animation_name) # Play the specified animation # Call this function when the character takes damage func hurt(damage_amount: int): health -= damage_amount # Subtract damage from health if health
@eddyxc16976 ай бұрын
hey bro, appreciate the tutorial. always enjoy creators who present things in a fast, but concise way
@dev-worm6 ай бұрын
I appreciate that! hope it helped!! thank you bro!
@h-angrygirl9 ай бұрын
Hola DevWorm te saludo desde Uruguay, no sé inglés pero algunas palabras entiendo, sumado a que he visto suficientes tutoriales en español como para ir entendiendo el razonamiento de lo que haces y/o dices por lo cual puedo seguirte sin problemas, muchisimas gracias por compartir tus conocimientos
@dabbasthegreatАй бұрын
one of the best tutorials i have seen so far
@dev-wormАй бұрын
so happy to hear that!! thank you so much!
@Quantum_phy9 ай бұрын
What to do if you want to change your weapon characters or both do you have to make every possible combination of them
@deadjuice18809 ай бұрын
Do not worry about that just yet. What I heard from programmers, is to take lessons one at a time. This series is a great starting point on learning game design and programming. KZbin or google specific features tutorials like those, and learn them in a separate project. Eventually, after working on so many project, you might see how they can be put into a single project. This stuff takes a while to learn and understand, and you do not want to overwhelm yourself. Stick to this one for now, and modify this project after the fact!
@Quantum_phy9 ай бұрын
@@deadjuice1880ok
@Nesisorator Жыл бұрын
Isn't thte whole process of picking the right animation in the code a bit convoluted? Do you really need that current_dir variable and that play_anim(1) in every if statement? I mean you could just pass the velocity vector into the function (play_anim(velocity) ), get its direction inside that func and pick the right animation with that, right? Also concatenating the Input check with all that elif statements creates some sort of hierarchy for the inputs, with "right" having the highest and "up" the lowest. I think you can do something like velocity.x = Input.is_action_pressed("right") - Input.is_action_pressed("left") velocity.y = Input.is_action_pressed("down") - Input.is_action_pressed("up") this has less hierarchy but pressing left and right at the same time cancels each other out and it allows diagonal movement.
@dev-worm Жыл бұрын
i was trying to keep diagonal movement out of it, but i guess that works. thanks for letting me know
@doublecc623411 ай бұрын
Could you go more in depth of how to setup the code for the animation
@masicbemester9 ай бұрын
Edit: it works!! Just had to multiply the integer difference by the speed value, like this: velocity.x = speed*(int(Input.is_action_pressed("ui_right")) - int(Input.is_action_pressed("ui_left"))) velocity.y = speed*(int(Input.is_action_pressed("ui_down")) - int(Input.is_action_pressed("ui_up"))) When I copied and pasted this right after func player_movement(delta):, it says "Invalid operands "bool" and "bool" for "-" operator" and I don't know how to fix this. Is the problem about the types of values being subtracted? What should I change for this to work? Does setting the input "bool" to an "int" fix this (I thought about this when remembering a beginner Python tutorial even though it's GDScript because I assumed there's at least a similarity here) or is my lack of coding experience showing?
@pafinnoobmufin5037 Жыл бұрын
Thank you so much, I just finished series yesterday and tried to do this part alone and almost did it but I am happy that I found different solution to animations and it works
@minkhe11 ай бұрын
You deserve more attention this is one of the best tutorials I've seen
@dev-worm11 ай бұрын
so happy to hear that, thank you!
@Carmidian7 ай бұрын
I saved your playlists under "awesome tutorials", I love following along with tutorials that you get an end product thank you so much for doing it. If you're looking for ideas would love to see a 2D side scroller beat em up. Like double dragon or golden axe
@dev-worm7 ай бұрын
Ill look into it!! thanks!! hope the tutorial helps!! if you end up having issues just let me know so I can help!
@1997AlexB Жыл бұрын
Very helpful and at a good pace to follow along to. Thanks for that, will be continuing with this series thill the end.
@dev-worm11 ай бұрын
glad to hear that... if you ever need any help with anything then dont be afraid to ask!
@gruby44984 ай бұрын
As the starting animation, you can just select starting animation in AnimatedSprite2D node (A+ icon in animation bar), great tutorial by the way, thanks for it!
@dev-worm4 ай бұрын
that’s a good tip! thank you! also i am so glad to hear that you liked it!
@--sql3 ай бұрын
This is really going to help me achieve my vision for a game. Appreciate it.
@ayoungartistakajack67993 ай бұрын
You'll have to do the coding yourself as the code he shows doesn't work in the latest version
@--sql2 ай бұрын
@@ayoungartistakajack6799 Cheers. I managed to code this section. I love coding. :)
@indieviktorian7206 Жыл бұрын
Your tutorials are the best!!!❤❤❤❤
@dev-worm Жыл бұрын
Thank you so much :)
@InconnuO_O491 Жыл бұрын
The best tutorial about the basics in godot I've seen
@aChannel13813 Жыл бұрын
im pretty well versed in c#, but for learning the built in gdscript functions i think this is a great series especially given its up to date.
@casachezdoom25885 ай бұрын
At first my intention was to use C# with Godot, since I had already started using it in Unity, but most tutorials use GDScript. Honestly, I don't mind GDScript at all and I feel like the transition in learning is pretty quick plus you don't need an external editor which simplifies the workflow.
@MrMaxiDPM3 ай бұрын
really good tutorial!!!!, im gonna make an cool rpg now. (using undertale sprites as placeholders lolll)
@dev-worm3 ай бұрын
Ooo goodluck!! keep me updated for sure!
@chonkhihumtsoe4879 Жыл бұрын
This is a great tutorial. Just started Godot and came across this video. You explain things really well
@dev-worm Жыл бұрын
Glad it was helpful! And I'm so happy to hear that!! If you ever need anything then please let me know!
@GyHUN95 Жыл бұрын
Great series! I see everywhere this method, instead of using seperate directions: var moveDirection = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down",) velocity = moveDirection * speed. Can you explain which would be the difference, or the best use case for a simple movement code? func _physics_process(_delta): handleInput() updateAnim() move_and_slide() func handleInput(): var moveDirection = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down",) velocity = moveDirection * speed #Anims are: Idle_LEFT, Walk_RIGHT, etc... func updateAnim(): if velocity.length() == 0: if $anim.is_playing(): $anim.stop() $anim.play("Idle_" + direction) else: direction = "DOWN" if velocity.x < 0 : direction = "LEFT" elif velocity.x > 0: direction = "RIGHT" elif velocity.y < 0: direction = "UP" $anim.play("Walk_" + direction)
@MetaDataAutomation10 ай бұрын
I've been scrolling the comments wondering the same. It's tough when learning as I want to know what is the best practice. In this video we seem to use a bunch of lines to achieve a fairly simple movement controller.
@ingred48604 ай бұрын
Hi! I have been using renpy for about five years now, and yes I love making visual novels, but think its time to branch out! I know im late, but thank you so much for making such good tutorials!
@dev-worm4 ай бұрын
thank you!! I am just glad to help!! I wish you only the best in your Godot journey!! If you ever have any questions feel free to reach out!!
@clashroyaleaze62293 ай бұрын
12:20 i did everything same,but my character doesn't move like in the video it moves like 1 block per every click and it doesn't go by
@dev-worm3 ай бұрын
it seems like you are using "if Input.is_action_just_pressed" instead of "if Input.is_action_pressed", because the "just_pressed" means it will only call it to move for one frame when the button is "just_pressed". I hope that makes sense and you can get everything working!! Goodluck!
@clashroyaleaze62293 ай бұрын
@@dev-worm ohh okay thanks
@ethandfriends25 ай бұрын
Thank you man, here’s hoping I can use this for an adventure game
@dev-worm5 ай бұрын
i hope everything works out for your game!! if you ever need any help just let me know!!
@fleurspr5432 Жыл бұрын
I just wanted to say thank you for making this tutorial. It's really easy to follow on!! 🥰
@dev-worm Жыл бұрын
Glad it was helpful!
@calebcasual Жыл бұрын
This is awesome, I know there are tutorials for pixel art as well but It'd be really cool to see a full tutorial one day that goes over making all the art assets and then the game as well.
@dev-worm Жыл бұрын
I completely agree!!
@komahanaru5 ай бұрын
Grate tutorial. I did a few mistakes. Like making the Animatedsprite2D a child of CollisionShape2D and I also placed he elif in the wrong place, messing up my animations. But it made me read the code and understand it better trying to solve it. I like your pacing and explaining too makes it easy to look back over certain parts.
@alieninwonderland42193 ай бұрын
@@komahanaru i need to ask you something because you literally did my same errors! What do you mean with placed tue elif in the wrong place? Because when I play the game my character does not do the front_iele animation, it just walks on the place! Did yours have the same problem? If yes, how did you solve?
@komahanaru3 ай бұрын
@@alieninwonderland4219 no, not particularly. Sounds like something gone wrong with the idle execution. Double-check your movement values and any capital letters. Make sure the name of the animation and what you type in the code are the exact same, capitals included. It's a common mistake when following tutorials.
@Slipping_thru_the_Seams Жыл бұрын
i got it working, this is so exciting!! thank you so much
if you use the animationplayer node instead, you can script other key changes with it, as well as play sound through audio player nodes also, you can change the speed with a slider on the character node inspector if you just "@export var" the speed variable. you can actually do a lot with this, like control the variable with other scripts
@Blitz289581 Жыл бұрын
Where would one be able to find a more in depth explanation or tutorial of what you're talking about?
@nobodyinparticular80 Жыл бұрын
I find animation player always preferable. I get that people could use something simpler, but for any object with more than a couple frames, animation player really should be used because of the power of keyframing everything.
@deadjuice18809 ай бұрын
Not a necessity, but if like me, you want to use WASD instead of the arrow keys: Just change if Input.is_action_pressed("ui_right"): to if Input.is_key_pressed(KEY_D) For clarification, you gotta change. is_action_pressed to is_key_pressed For all of them. And remember, (KEY_D) does not have "" around it like ("ui_right") "ui_right" is calling a predefiened String, while KEY_D is calling a raw input. I _believeeee_ that's what is going on. But, it works for me.
@TheEndTimes1018 ай бұрын
Or better yet make a input for them in the settings and call that. Doing it that way lets you switch key on the fly later on.
@deadjuice18807 ай бұрын
@@TheEndTimes101 Should have mentioned that option. It's very useful, and saves headaches down the line. I'm still learning, so I personally want to utilize the script language as much as I possibly can. Godot is a very good editor. Let it help.
@RicardoLeidenz Жыл бұрын
As a Unity refugee, I thank you
@DremorusReborn Жыл бұрын
Thank you for the tutorial! I've managed to do this :D Keep making these!
@glitcheddivinity Жыл бұрын
This is amazing. Thank you so much! As an absolute beginner, this was easy to follow. So excited for the rest of this!
@dev-worm Жыл бұрын
so glad I could help, if there is anything else you need then please let me know.
@dallisfrancis1136 Жыл бұрын
I have watched a lot of videos about Godot and yours are the best . Your video literally explained everything and I was able to succeed in what I was trying to do
@dev-worm Жыл бұрын
so great to hear! if you ever need help with anything then let me know!
@Jardras4 ай бұрын
Thanks for the Tutorial. Starting to get into game dev and Godot seems to be fitting :D
@dev-worm4 ай бұрын
glad to hear godot seems like the correct fit for you!! i wish you only the best with your godot journey! and if you ever need anything just let me know!!
@turtleburger5 ай бұрын
Holy cow my dude, BREATHE! I slowed it down to 0.75 speed and I'm still constantly pausing to catch up. xD
@dev-worm5 ай бұрын
ah i’m sorry!! hope you were still able to get all the information out of it!
@MijmerMopper11 ай бұрын
I am so glad I got in the habit of using a bit different names then you do, simply because it helps me keep track of why the things work the way they work, rather then just follow along.
@Olon973 ай бұрын
Going to point my students this way, but it would have been nice if you used enum (or at least constants) instead of just a number for direction/animation. # Define an enum for the four cardinal directions enum Direction { FRONT, # Value is 0 BACK, # Value is 1 LEFT, # Value is 2 RIGHT # Value is 3 }
@delonmeau Жыл бұрын
15:21 Why not use the current velocity to determine which direction the player is facing? No need for a separate variable
@JaiLeeroy Жыл бұрын
You may be the Griffpatch of Godot sir. Thank you for the amazing tutorial!
@stiffidy11 ай бұрын
Can someone please explain on what Renderer to use? Because the video starts instantly with a scene already made.. Forward+, Mobile or Compatibility? Thanks.
@CHR1SMOV1ES11 ай бұрын
In the top right Corner of the Video you can see that he uses currently "Forward+". You can always change this settings later, but you probably have to adjust settings.
@tommasotezza1319 Жыл бұрын
I just found this series , I'm so exited to start it
@LivingLikeGaryYT9 ай бұрын
what ever you name your animations MAKE SURE you make it the exact same in your code for it to actually play your animations. i struggles with this for a while because i make some capital letter mistakes
@dev-worm9 ай бұрын
yes!! very good point! glad you mentioned that for others!
@mdnghtppl0000 Жыл бұрын
great video, clear and concise
@333brndn211 ай бұрын
Running across a slight issue with my movement. I wrote the script for the movement, and tested it, and it was working fine. I added in the scripting for changing the animations, and now while my left and right movement work fine, along with animations, my character cannot move up and down. It plays the appropriate animation for the buttons being held or let go of, but can no longer move up or down.
@333brndn211 ай бұрын
I fixed it! The character mustve been stuck on the x axis somehow, moving him slightly more towards the center of the room made it all suddenly work.
@Welebam530810 ай бұрын
Hey! maybe you could help me, my problem is "Cannot call non-static function "play()" on the class "AnimatedSprite2D" directly. Make an instance instead"
@drinkwwwaterrr Жыл бұрын
Thanks man this is awesome especially since most tutorials are still stuck on Godot 3
@bubbathesomewhatreal Жыл бұрын
This is a great tutorial, but my character isn't moving. My guess is that maybe something small got changed in the way things are named. The code is: extends CharacterBody2D const speed = 100 func _physics_process(delta): player_movement(delta) func player_movement(delta): if Input.is_action_pressed("ui_right"): velocity.x = speed velocity.y = 0 elif Input.is_action_pressed("ui_left"): velocity.x = -speed velocity.y = 0 elif Input.is_action_pressed("ui_down"): velocity.y = speed velocity.x = 0 elif Input.is_action_pressed("ui_up"): velocity.y = -speed velocity.x = 0 else: velocity.x = 0 velocity.y = 0 move_and_slide() 3 Month+ Edit: I've changed the code a little bit to use custom keybinds for WASD, but this should be translatable to "ui_(direction)": extends CharacterBody2D const speed = 100 func _physics_process(delta): player_movement(delta) func player_movement(detla): if Input.is_action_pressed("move_right"): velocity.x = speed velocity.y = 0 elif Input.is_action_pressed("move_left"): velocity.x = -speed velocity.y = 0 elif Input.is_action_pressed("move_down"): velocity.y = speed velocity.x = 0 elif Input.is_action_pressed("move_up"): velocity.y = -speed velocity.x = 0 else: velocity.x = 0 velocity.y = 0 move_and_slide()
@ZemoGames Жыл бұрын
I have this same exact issue, have you found a solution for it yet??
@doublecc623411 ай бұрын
I have the same exact issue
@CozyThreadsAU4 ай бұрын
I had this same problem too, make sure that with move_and_slide() that there is only one little symbol before it (idk what its called)
@Art_holics Жыл бұрын
hello i just wanna let u know that i am very interested on game development although i dont know where to and how to start haha yea so luckily i found ur channel and i am just about to follow ur tutorial and download godot!!! hope you still continue doing this
@jeremiahaemile2008 Жыл бұрын
Some advise First make smalls games before make your game to learn Second make missions menu Third sees tutorial and try to understand it Fourth enter game Jams Fifth enter community for development and make freind ship with anothers developer Sixth learn python that will very help you in Godot because gd script very femailer to python
@Art_holics Жыл бұрын
@@jeremiahaemile2008 i am starting with this tutorials and trying to finish this and after that ill combine all my knowledge to try and make small games! I am very happy that gdscript is very similar to python because i already has a knowledge on coding in python! Will definitely join game jams! And prolly ill do devlog and record the process and post it on social media to see my progress! Thanks for the suggestion ill make that as my roadmap broo!
@Art_holics Жыл бұрын
@@jeremiahaemile2008 can you recommend a community where i can make dev friends?
@marshmellow98344 ай бұрын
I love the video and though I had some issues I did learn alot so thank you vary much!
@dev-worm4 ай бұрын
i am so glad you were able to overcome the issues!! and happy to hear you learned a lot!! goodjob!
@mihirparab2172 Жыл бұрын
tysm!! this series is going to help a lot for sure....❤
@WanderfromSOTC5 ай бұрын
Hopefully I will push through and finally make a game.
@dev-worm5 ай бұрын
i wish you luck!! my advice to you is to not rush yourself but to try and stay consistent!! If you ever need any help just let me know!! im here for you!!
@gametube1375 Жыл бұрын
I have been waiting for this player
@davildur10 ай бұрын
Thank you for this tutorial. I am glad that i found this one!!
@dev-worm10 ай бұрын
glad to hear, thank you! hoping everything is working smoothly for you!
@ThePixelPal Жыл бұрын
Such an easy-to-follow tutorial thxs a bunch!
@dev-worm Жыл бұрын
so glad to hear that!!
@life_of_logan.t9 ай бұрын
Hello! Thank you for the tutorial! I am having an issue when I try to test the movement where whenever I press the arrow keys it starts scrolling through my code instead of moving my character. Im sure its a simple setting but I don't know where to find it. Thanks for the help!
@deadjuice18809 ай бұрын
When you press the "Play scene" button, the window that pops up with the game should be the one the keyboard is paying attention to. Maybe it's your computer or keyboard being weird. Try alt + tabbing manually to the game window after hitting "Play Scene". Alternatively, you can also change the input to be WASD for movement, instead of the arrow keys. Just change: if Input.is_action_pressed("ui_right"): to if Input.is_key_pressed(KEY_D) You gotta change is-action- to is_key_ And remember, (KEY_D) does not have "" around it like "ui_right" "ui_right" is calling a predefiened String, while KEY_D is calling a raw input. I believe that's how it work.
@life_of_logan.t9 ай бұрын
@@deadjuice1880 I just made a dumb typo 😅 I got it figured out. Thanks for the help!
@deadjuice18809 ай бұрын
@@life_of_logan.t Please share what was off! If possible. Programming is complicated. And it doesn't stop being so, ever.
@cylop2249 ай бұрын
I'm having the same issue. Would really appreciate if you could share your fix!
@Xalantor11 ай бұрын
This is EXACTLY what I was looking for. Thank you for your hard work!
@dev-worm11 ай бұрын
so happy to hear that! thank you! hope everything is able to help you out!
@jeremyturcotte6673 Жыл бұрын
Hi everyone, I am new to game dev and wanted to learn Godot. Found this guide and thought I would try it. However been having a small difficulty. When I am typing the code "if Input.is_action_pressed ("ui_right'):" i get an error that says Error at (10,8): Identifier "input" not declared in the current scope. What am I doing wrong here? Even when I slowly type it in to look for the proper selection it is not available. Any help would be appreciated.
@jeremyturcotte6673 Жыл бұрын
Found my mistake. didn't use a capital I in Input
@aneerudh1712 Жыл бұрын
Omg thank you so much. I was just struggling with the new version! Keep going👍
@dev-worm Жыл бұрын
this series will be very helpful for sure, I learned a lot about the new godot version just from making this little game lol
@Welebam530810 ай бұрын
@@dev-worm I am having a little difficulties, i tried changing the version but it didn't work, my problem is that "Cannot call non-static function "play()" on the class "AnimatedSprite2D" directly. Make an instance instead"
@0liwiersky Жыл бұрын
its my first game in godot ever (apart from the one where I added a 3D model and gave up) and i'm literally crying 😭
@sashax28453 ай бұрын
Maaan its awesom!! thank you a lot!!! finnaly iv made 8way isometric animation without AnimationPlayer wich is only good for killing left mouse button and my nerves
@dev-worm3 ай бұрын
haha!! if you need any help feel free to ask!! Im here for you bro!
@sk8fox110 ай бұрын
i'm having trouble when i keep pressing up or down and then i try to walk left or right the animation bugs it doesnt go from front or back walk to side, i have to stop walking and then press it again for the animation to work properly
@deadjuice18809 ай бұрын
Make sure the NAME you are calling in is the right one. if movement == 1: anim.play("front_walk") Make sure ("front_walk") matches what you called the animation in AnimatedSprite2D, front_walk front_idle front _attack ect For example, I accidently did: if movement == 1: anim.play("down_walk") But, I named it in AnimatedSprite2D: front_walk Hope that helps.
@ros1eeee7 ай бұрын
Super helpful!! Thank you!!
@dev-worm7 ай бұрын
thank you! goodluck in the rest of the series! and if you have any questions then please let me know!
@demiangarden Жыл бұрын
Just started following this tutorial series! So excited for what's next!!
@dev-worm Жыл бұрын
so much coming soon! hope the series helps you!
@LifeWithJoan_10 ай бұрын
I have made everything right and there are no errors but when i press play the screen is just grey and my character is not there 😢 Please help 🙏 The parameter delta is never used and second fault is player.gd.7 ready() node not found line 7
@deadjuice18809 ай бұрын
Warning: Parameter Delta not being used should be okay, shouldn't be the issue. The only things I can think of, is maybe you made a script in World by accident? Are you making the script on CharacterBody2D[player]? Maybe the character is just off the screen too much? I'd go back from the very beginning of the video, and see if you missed a step.
@piesio1934 ай бұрын
12:33 why my figure dont move?? its this becase colission shape dint been selected??
@Beubbas3 ай бұрын
I'm assuming you had the same issue as me, I removed some indents at the end so that it looked identical to the video and now mine works