Hello i was doing this tutorial but for some reason i cant drag the cards i dont know what i did wrong

Godot Version

4.4

Question

extends Node2D

var card_drag
var screen_size

func _ready() -> void:
	screen_size=get_viewport_rect().size

func _process(delta: float) -> void:
	if card_drag:
		var mouse_pos= get_global_mouse_position()
		card_drag.position=Vector2(clamp(mouse_pos.x, 0, screen_size.x), clamp(mouse_pos.y, 0, screen_size.y))



func _input(event):
	if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT:
		if event.pressed:
			var card = ray_check_for_card()
			if card:
				card_drag = card
		else:
			card_drag=null



func ray_check_for_card():
	var space_state = get_viewport().world_2d.direct_space_state
	var parameters = PhysicsPointQueryParameters2D.new()
	parameters.position = get_viewport().get_mouse_position()
	parameters.collide_with_areas = true
	parameters.collision_mask = 1
	var result = space_state.intersect_point(parameters)
	if result.size() > 0:
		print(result[0].collider.get_parent())
	return null

Any errors in the debugger?

1 Like

Look at 7:23 in the video. It returns a value in the if statement.

2 Likes

no just the cards dont drag

	if result.size() > 0:
		print(result[0].collider.get_parent())
	return null

you mean this?

Yes, instead of print statement should be return.

1 Like

thanks a lot man :cowboy_hat_face:

1 Like