Creating 2D Character Movement in Godot: A Step-by-Step Tutorial


Welcome back to our game development blog! Today, we’re diving into a fundamental aspect of 2D game development: character movement. Using the Godot game engine, we’ll guide you through the process of setting up basic character movement, allowing you to bring your 2D character to life.


Getting Started


Before we dive into coding, ensure you have Godot installed and a new project set up. If you’re new to Godot, check out our introduction to the Godot game engine to get started.


Step 1: Setting Up the Scene


1. Create a New Scene

Open Godot and create a new scene.

Select 2D Scene from the scene options.

2. Add a KinematicBody2D Node

Right-click on the root node and select Add Child Node.

Add a KinematicBody2D. This node will handle the character’s physics and collisions.

3. Add a Sprite Node

Right-click on KinematicBody2D and add a Sprite node. This will display your character’s image.

Assign a texture to the Sprite. You can use a simple placeholder image for now, or draw a quick sprite in any image editing software.

4. Add a CollisionShape2D Node

Right-click on KinematicBody2D again and add a CollisionShape2D node.

Set the Shape property of CollisionShape2D to a new RectangleShape2D and adjust its size to match your sprite.


Your node structure should look like this:


- KinematicBody2D

    - Sprite

    - CollisionShape2D


Step 2: Writing the Movement Script


1. Attach a Script to KinematicBody2D

Select the KinematicBody2D node.

Click on the Attach Script icon (a paper with a pen) in the top-right of the editor or press Ctrl + T.

Name your script PlayerMovement.gd and save it.

2. Script the Movement

Open PlayerMovement.gd and replace its contents with the following code:


extends KinematicBody2D


# Declare member variables here. Examples:

var speed = 200 # Movement speed in pixels per second


func _process(delta):

    var velocity = Vector2() # Movement direction


    # Handle input

    if Input.is_action_pressed("ui_right"):

        velocity.x += 1

    if Input.is_action_pressed("ui_left"):

        velocity.x -= 1

    if Input.is_action_pressed("ui_down"):

        velocity.y += 1

    if Input.is_action_pressed("ui_up"):

        velocity.y -= 1


    velocity = velocity.normalized() * speed # Normalize to ensure consistent speed


    # Move the character

    velocity = move_and_slide(velocity)


Step 3: Configuring Input


1. Set Up Input Actions

Go to Project > Project Settings > Input Map tab.

Add new input actions for ui_right, ui_left, ui_up, and ui_down.

Assign arrow keys to these actions, or any keys of your choice.


Step 4: Testing the Movement


1. Save and Run the Scene

Save your scene.

Set it as the main scene if prompted (or go to Project > Project Settings > Run > Main Scene).

Press the play button or hit F5 to run the scene.


Your character should now move around the screen according to the input directions!


Step 5: Adding Smooth Movement (Optional)


If you want to add smoother movement, you can modify the script to include acceleration and deceleration:


extends KinematicBody2D


var speed = 200

var acceleration = 800

var friction = 600

var velocity = Vector2()


func _process(delta):

    var input_direction = Vector2()


    if Input.is_action_pressed("ui_right"):

        input_direction.x += 1

    if Input.is_action_pressed("ui_left"):

        input_direction.x -= 1

    if Input.is_action_pressed("ui_down"):

        input_direction.y += 1

    if Input.is_action_pressed("ui_up"):

        input_direction.y -= 1


    if input_direction.length() > 0:

        input_direction = input_direction.normalized()

        velocity = velocity.move_toward(input_direction * speed, acceleration * delta)

    else:

        velocity = velocity.move_toward(Vector2(), friction * delta)


    velocity = move_and_slide(velocity)


Conclusion


You’ve now set up basic 2D character movement in Godot! This tutorial covers the essentials, and from here, you can expand on the script to include features like animations, jumping, and more complex physics interactions.


Stay tuned for more tutorials on creating interactive 2D worlds in Godot. If you have questions or run into issues, leave a comment below or join our community discussions. Happy game developing!


Stay Connected


Follow our blog for more game development tutorials and tips. Let’s keep creating amazing games together!

Comments

Popular posts from this blog

Exploring “Papers, Please”: A Tale of Morality and Bureaucracy