Как передать переменную с позициeй определенного тайла из тайл мапы в другой узел, при этом они не находятся в одном древе Godot 4
В древе доски находится сама tilemap, с помощью map to local нужно передать значение переменной selected_tile в узел pawn(пешка) для изменения её глобальной позиции и в итоге реализации ее движения
Сцена Pawm(пешки):
extends CharacterBody2D
var scene = load("res://shapes/pawn.tscn")
func _physics_process(delta):
MoveMouse()
func MoveMouse():
if Input.is_action_just_pressed("LeftMouse"):
print(Board.selected_tile)
global_position = Board.selected_tile
Сцена доски:
extends TileMap
var GridSize = 8
@export var Dic = {}
var selected_tile = Vector2(100,100)
var scene = load("res://shapes/board.tscn")
func _on_ready():
for x in GridSize:
for y in GridSize:
if (x % 2 == 0 && y % 2 != 0):
Dic[str(Vector2(x, y))] = {"Type": "Black", "Position" : Vector2(x, y)}
set_cell(0, Vector2(x, y), 0, Vector2i(1, randi_range(2, 5)), 0)
if (x % 2 != 0 && y % 2 == 0):
Dic[str(Vector2(x, y))] = {"Type": "Black", "Position" : Vector2(x, y)}
set_cell(0, Vector2(x, y), 0, Vector2i(1, randi_range(2, 5)), 0)
if (x % 2 != 0 && y % 2 != 0):
Dic[str(Vector2(x, y))] = {"Type": "White", "Position" : Vector2(x, y)}
set_cell(0, Vector2(x, y), 0, Vector2i(2, randi_range(2, 5)), 0)
if (x % 2 == 0 && y % 2 == 0):
Dic[str(Vector2(x, y))] = {"Type": "White", "Position" : Vector2(x, y)}
set_cell(0, Vector2(x, y), 0, Vector2i(2, randi_range(2, 5)), 0)
func _process(delta):
var tile = local_to_map(get_global_mouse_position())
selected_tile = map_to_local(tile)
for x in GridSize:
for y in GridSize:
erase_cell(1, Vector2(x, y))
if Dic.has(str(tile)):
set_cell(1, tile, 0, Vector2i(4, 2), 0)
print(Dic[str(tile)])