Godot Version
4.2.1
Question
I want to make a grid-based puzzle game. I already wrote the movement script but it doesent work.
extends Node2D
@onready var tile_map = $"../TileMap"
func move(dir: Vector2):
var current_tile: Vector2i = tile_map.local_to_map(global_position)
print(current_tile.x, current_tile.y)
var target_tile: Vector2i = Vector2i(
current_tile.x + dir.x,
current_tile.y + dir.y,
)
var tile_data: TileData = tile_map.get_cell_tile_data(0, target_tile)
if tile_data.get_custom_data("walkable") == false:
return
global_position = tile_map.map_to_local(target_tile)
#func _on_level_swipe_down():
# move(Vector2.DOWN)
#
#func _on_level_swipe_left():
# move(Vector2.LEFT)
#
#func _on_level_swipe_right():
# move(Vector2.RIGHT)
#
#func _on_level_swipe_up():
# move(Vector2.UP)
func _process(delta):
if Input.is_action_just_pressed("ui_up"):
move(Vector2.UP)
elif Input.is_action_just_pressed("ui_down"):
move(Vector2.DOWN)
elif Input.is_action_just_pressed("ui_right"):
move(Vector2.RIGHT)
elif Input.is_action_just_pressed("ui_left"):
move(Vector2.LEFT)
And this is what my game looks like: