![]() |
Attention | Topic was automatically imported from the old Question2Answer platform. |
![]() |
Asked By | hicode |
Hello,
I started using godot and try to make some tests.
But i’m blocked at this point :
I have a character (KinematicBody2D) and a tile map.
I can move him at the right or at the left, jump but i cant jump and move together.
When i try it go upper but dont move…
I think im not using correctly the move_and_slide but i dont know how to do…
here is my code :
extends KinematicBody2D
# Declare member variables here. Examples:
const GRAVITY = 200
const WALK_SPEED = 200
var velocity = Vector2()
var sur_sol = false
var delai_jump=0
# var b = "text"
# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.
func get_input():
velocity = Vector2()
if(Input.is_action_pressed("ui_right") == true):
velocity.x += 1
elif(Input.is_action_pressed("ui_left") == true):
velocity.x -= 1
if(Input.is_action_pressed("ui_down") == true):
velocity.y += 1
if(Input.is_action_pressed("ui_up") == true and is_on_floor()):
delai_jump=20;
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _physics_process(delta):
get_input()
if(delai_jump > 0):
velocity.y -= 250
delai_jump = delai_jump-1
if(sur_sol == false):
velocity.y += 12000*delta
if(velocity.length() > 0):
if(velocity.x < 0):
$Sprite.flip_h = true
velocity = velocity.normalized() * WALK_SPEED
$Sprite.play("run")
elif(velocity.x > 0):
$Sprite.flip_h = false
velocity = velocity.normalized() * WALK_SPEED
$Sprite.play("run")
else:
$Sprite.play("jump")
else:
$Sprite.play("idle")
print(velocity)
if(is_on_floor()):
sur_sol=true
else:
sur_sol=false
move_and_slide(velocity, Vector2(0,-1))
Thanks for help
Hey, I’d recommend you watch a tutorial on how to make movement in Godot such as https://youtu.be/wETY5_9kFtA.
Mariothedog | 2020-03-02 20:36