extends Node2D var mouse_down_position = Vector2() func _unhandled_input(event): if event is InputEventMouseButton: if event.button_index == MOUSE_BUTTON_LEFT: if event.pressed: # Record the position where the mouse was pressed down mouse_down_position = get_global_mouse_position() else: # Handle mouse button release var pos = get_global_mouse_position() var vol = pos - mouse_down_position spawn(mouse_down_position,vol) func spawn(pos,vol): var r=int($"../ScreenOverlay/HUD/HBoxContainer/Colors/Red".text) var g=int($"../ScreenOverlay/HUD/HBoxContainer/Colors/Green".text) var b=int($"../ScreenOverlay/HUD/HBoxContainer/Colors/Blue".text) if r+g+b>0: spawm_pool(pos,r,g,b) else: spawn_player(pos,vol) func spawm_pool(pos,red,green,blue): var new_pool: Pool = load("res://pool.tscn").instantiate() new_pool.position = pos new_pool.mana_r=red new_pool.mana_g=green new_pool.mana_b=blue new_pool.get_node("CollisionShape2D2").disabled=true; #new_pool.get_node("StaticBody2D/CollisionShape2D2").set_deferred("disabled", true) get_tree().root.get_node("Sim/Map").call_deferred("add_child",new_pool) func spawn_player(pos,vol): var new_player = load("res://player.tscn").instantiate() new_player.position = pos new_player.apply_impulse(vol) # Prepare the shape query parameters var query_parameters = PhysicsShapeQueryParameters2D.new() var collision_shape = new_player.get_node("CollisionShape2D").shape query_parameters.set_shape(collision_shape) query_parameters.set_transform(Transform2D(0, pos)) query_parameters.set_collision_mask(1) # Get the Physics2DDirectSpaceState for collision checking var space_state = get_world_2d().direct_space_state # Check for collision var collision_results = space_state.intersect_shape(query_parameters) if collision_results.size() == 0: # No collision, safe to add child add_child(new_player) else: for collision in collision_results: #print if collision.collider.get_parent() is Pool: new_player.queue_free() collision.collider.get_parent()._on_decay_timer_timeout() return var marker = Sprite2D.new() marker.position = new_player.position marker.scale=Vector2(0.1,0.1) marker.texture = load("res://images/crosshair.png") add_child(marker) new_player.queue_free()