Hi, I’m trying to make a simple game, and I want my character to only move left and right. I’ve been looking for the right script, but I only found this one:
func _physics_process(delta):
var direction = Input.get_vector(“ui_left”,“ui_right”,“ui_up”,“ui_down”
velocity = direction * 200
move_and_slide()
The horizontal axis is the x axis, vertical is y. You could take this script and make velocity.y = 0 before move_and_slide() to remove most vertical movement. The name of the function move_and_slide() might hint at how one could slide up a slope, but that is up to your level design.
Let’s say you got the difficult one. Character 3D.
Right click. Select attach Script.
Make your selection like this.
You’re only going to get this in the script.
extends CharacterBody3D
const SPEED = 5.0
const JUMP_VELOCITY = 4.5
# Get the gravity from the project settings to be synced with RigidBody nodes.
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
func _physics_process(delta):
# Add the gravity.
if not is_on_floor():
velocity.y -= gravity * delta
# Handle Jump.
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = JUMP_VELOCITY
# Get the input direction and handle the movement/deceleration.
# As good practice, you should replace UI actions with custom gameplay actions.
var input_dir = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down")
var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
if direction:
velocity.x = direction.x * SPEED
velocity.z = direction.z * SPEED
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
velocity.z = move_toward(velocity.z, 0, SPEED)
move_and_slide()