Topic was automatically imported from the old Question2Answer platform.
Asked By
wetfish
Just like the title says. I can’t get my character to move in the Dodge the Creeps tutorial.
My code doesn’t have any errors, and I’ve re-typed everything 4 or 5 times and still haven’t been able to make it work.
Could someone help me? Thanks so much
extends Area2D
export var speed = 400 # How fast the player will move (pixels/sec).
var screen_size # Size of the game window.
func _ready():
screen_size = get_viewport_rect().size
func _process(delta):
var velocity = Vector2()
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_up"):
velocity.y +=1
if Input.is_action_pressed("ui_down"):
velocity.y -=1
else:
$AnimatedSprite.stop()
position += velocity * delta
position.x = clamp(position.x, 0, screen_size.x)
position.y = clamp(position.y, 0, screen_size.y)
It’s the lack of that second line (normalizing the input and multiplying by speed) that’s leading to a lack of movement - or to be more accurate, such slow movement that it’s unnoticeable.
Good catch. I inserted that (in fact, I re-typed everything from scratch), but it’s still not moving.
My full code now looks like this:
extends Area2D
export var speed = 400 #speed
var screen_size #size of window
func _ready():
screen_size = get_viewport_rect().size
func _process(delta):
var velocity = Vector2() #movement vector
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
if velocity.length() > 0:
velocity = velocity.normalized() * speed
$AnimatedSprite.play ()
else:
$AnimatedSprite.stop ()
position += velocity * delta
position.x = clamp(position.x, 0, screen_size.x)
position.y = clamp(position.y, 0, screen_size.y)
wetfish | 2020-01-23 07:08
Well, now you’ve changed the names of the input actions to have . in them, which doesn’t work. The built-in input action names are "ui_left", etc.