Invalid operands 'int' and 'Vector2' in operator '-'.

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

I was following the godot pong tutorial and a few errors came up. I fixed the first few but this I can’t fiigure out. Someone please help.

Code:

func _process(delta):
var ball_pos = get_node(“ball”).get_position_in_parent()
var left_rect = Rect2(get_node(“left”).get_position_in_parent() - pad_size / 2, pad_size)
var right_rect = Rect2(get_node(“left”).get_position_in_parent() - pad_size / 2, pad_size)

ball_pos += direction * ball_speed * delta

if((ball_pos.y < 0 and direction.y < 0) or (ball_pos.y > screen_size.y and direction.y > 0)):
	direction.y = -direction.y 

if ((left_rect.has_point(ball_pos) and direction.x < 0) or (right_rect.has_point(ball_pos) and direction.x > 0)):
	direction.x = -direction.x
	ball_speed *= 1.1
	direction.y = randf() * 2.0 - 1
	direction = direction.normalized()

if (ball_pos.x < 0 or ball_pos.x > screen_size.x):
	ball_pos = screen_size * 0.5 #ball goes to screen center
	ball_speed = 80
	direction = Vector2(-1, 0)

get_node("ball").set_pos(ball_pos)

#move left pad
var left_pos = get_node("left").get_pos()

if (left_pos.y > 0 and Input.is_action_pressed("left_move_up")):
	left_pos.y += -PAD_SPEED * delta
if (left_pos.y < screen_size.y and Input.is_action_pressed("left_move_down")):
	left_pos.y += PAD_SPEED * delta

get_node("left").set_pos(left_pos)

#move right pad
var right_pos = get_node("right").get_pos()

if (right_pos.y > 0 and Input.is_action_pressed("right_move_up")):
	right_pos.y += -PAD_SPEED * delta
if (right_pos.y < screen_size.y and Input.is_action_pressed("right_move_down")):
	right_pos.y += PAD_SPEED * delta

get_node("right").set_pos(right_pos)
:bust_in_silhouette: Reply From: Wakatta

So you’re trying to subtract a Vector2 and int values in these lines
getnode("left").getpositioninparent() - padsize / 2

Which is not allowed or proper calculation for that matter

This is the correct answer.

This might be the calculation you were going for:

var vector_pad_size = Vector2.ONE * pad_size
var left_rect = Rect2(get_node("left").get_position_in_parent() - (vector_pad_size / 2), vector_pad_size)
var right_rect = Rect2(get_node("left").get_position_in_parent() - (vector_pad_size / 2), vector_pad_size)

It doesn’t make any sense mathematically to do Vector2(5,5) - 2 but it does make sense to do: Vector2(5,5) - (Vector2(1,1) * 2) which equals Vector2(3,3)

timothybrentwood | 2021-07-07 19:03