0 votes

I started to learn Godot and GDScript for two days and I have a problem with the first game tutorial on the Godot website. My player isn't moving and I don't know what the mistake is.

Here is my code:

extends Area2D

export var speed = 400 # How fast the player will move (pixels/sec).
var screen_size # Size of the game window.

func ready():
screensize = getviewport_rect().size

func process(delta):
var velocity = Vector2() # The player's movement vector
if Input.is
velocity.x += 1
if Input.isactionpressed("uileft"):
velocity.x -= 1
if Input.is
velocity.y += 1
if Input.isactionpressed("uiup"):
velocity.y -= 1
if velocity.length() > 0:
velocity = velocity.normalized() * speed
position += velocity * delta
position.x = clamp(position.x, 0, screen
position.y = clamp(position.y, 0, screen_size.y)

I don't copy & paste it from the website. I've got an error which says 'Invalid get index 'x' (on base: 'Nil'). What does ist mean?


Godot version 3.2.2
in Engine by (12 points)

1 Answer

0 votes

Read error text to get which line exactly You made mistake in. It says somewhere in your code there is an empty variable followed by ".x". You pasted code that is impossible to run by compiler - how can You introduce var velocity in process() and refer to this variable in Input() ? It is impossible. I am sure You introduced var velocity higher in your code, above process(). So You introduced it as Vector2 but without a value, that means it is NULL ( or Nill ). You can't make any comparisons and calculations on NULL value, it must be set to something first.

Introduce var velocity as Vector2(0,0) in main script, not under any funcion.

by (7,755 points)
Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read Frequently asked questions and How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to [email protected] with your username.