0 votes

Hello! I ran into a snag while following the official godot tutorial "Your First Game".
The error code I'm receiving is: Invalid get index 'x' (on base: 'Rect2').

https://gyazo.com/d78da7d030f92c4b311fbf9bdc16770f

Any Help is greatly appriciated! Thanks! Godot is awesome :D

export var speed = 400
var screen_size

func _ready():
    screen_size = get_viewport_rect()

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_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)
asked Oct 27, 2019 in Engine by cagoss (15 points)

1 Answer

+1 vote
Best answer

The line in _ready() should be:

screen_size = get_viewport_rect().size

Because you left off size, screen_size is a Rect2, not a Vector2, and thus has no x property.

answered Oct 27, 2019 by kidscancode (17,714 points)
selected Oct 27, 2019 by cagoss

Thank you for not only the answer, but the explanation!

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 How to use this Q&A? before posting your first questions.