Invalid call. Nonexistent function 'length' in base float

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By Lord_Nacro

So I just started learning and got this error when using the code given in documentation.

extends Area2D

export var speed = 400
var screen_size

func _ready():
screen_size = get_viewport_rect().size

func _process(delta):
var velocity = Vector2()
if Input.is_action_pressed(“ui_right”) :
velocity = velocity.x+1
if Input.is_action_pressed(“ui_left”) :
velocity = velocity.x-1
if Input.is_action_pressed(“ui_up”) :
velocity = velocity.y+1
if Input.is_action_pressed(“ui_down”) :
velocity = velocity.y-1
if velocity.length()>0 : This is where the error occurs
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)
if velocity.x != 0:
$AnimatedSprite.animation = “walk”
$AnimatedSprite.flip_v = false
$AnimatedSprite.flip_h = velocity.x < 0
elif velocity.y != 0:
$AnimatedSprite.animation = “up”
$AnimatedSprite.flip_v = velocity.y > 0

:bust_in_silhouette: Reply From: kidscancode

On the line before your error, you do

velocity = velocity.y + 1

That makes velocity a float, because you’re only using the y component. I suspect you wanted to say

velocity.y = velocity.y + 1

PS - Please format your code properly when posting - it will be much easier for helpers to read. When editing your post, press the “Code Sample” button - it looks like: { }.