Godot Version
4.3
Question
I am having a little issue figuring out animation for tilebased movement in an isometric tileset. I have 2 animations that I want to switch between, and flip_h it when necessery. Preferably the character would use “Move” animation normally at bottom left, “Move” animation with flip_h true at bottom right, “Moveaway” animation normally at top left, and “Moveaway” animation with flip_h at top right. I tried to figure out the vector values and create this script:
if tile_map_layer.local_to_map(get_global_mouse_position()) == tile_map_layer.local_to_map(global_position) and get_parent().character_selected == false:
select_character()
get_parent().character_selected = true
if tile_map_layer.get_cell_source_id(tile_map_layer.local_to_map(get_global_mouse_position())) == 1:
if tile_map_layer.local_to_map(global_position).x > tile_map_layer.local_to_map(get_global_mouse_position()).x:
anim.play("walkaway")
anim.flip_h = false
elif tile_map_layer.local_to_map(global_position).x > tile_map_layer.local_to_map(get_global_mouse_position()).x and tile_map_layer.local_to_map(global_position).y < tile_map_layer.local_to_map(get_global_mouse_position()).y and tile_map_layer.local_to_map(global_position).x >= tile_map_layer.local_to_map(get_global_mouse_position()).y:
anim.play("walkaway")
anim.flip_h = false
elif tile_map_layer.local_to_map(global_position).y > tile_map_layer.local_to_map(get_global_mouse_position()).y:
anim.play("walkaway")
anim.flip_h = true
elif tile_map_layer.local_to_map(global_position).y > tile_map_layer.local_to_map(get_global_mouse_position()).y and tile_map_layer.local_to_map(global_position).x > tile_map_layer.local_to_map(get_global_mouse_position()).x and tile_map_layer.local_to_map(global_position).y >= tile_map_layer.local_to_map(global_position).x:
anim.play("walkaway")
anim.flip_h = true
elif tile_map_layer.local_to_map(global_position).y < tile_map_layer.local_to_map(get_global_mouse_position()).y:
anim.play("walk")
anim.flip_h = false
elif tile_map_layer.local_to_map(global_position).y < tile_map_layer.local_to_map(get_global_mouse_position()).y and tile_map_layer.local_to_map(global_position).x < tile_map_layer.local_to_map(get_global_mouse_position()).x and tile_map_layer.local_to_map(get_global_mouse_position()).y >= tile_map_layer.local_to_map(get_global_mouse_position()).x:
anim.play("walk")
anim.flip_h = false
elif tile_map_layer.local_to_map(global_position).x < tile_map_layer.local_to_map(get_global_mouse_position()).x:
anim.play("walk")
anim.flip_h = true
elif tile_map_layer.local_to_map(global_position).x < tile_map_layer.local_to_map(get_global_mouse_position()).x and tile_map_layer.local_to_map(global_position).y > tile_map_layer.local_to_map(get_global_mouse_position()).y and tile_map_layer.local_to_map(get_global_mouse_position()).x >= tile_map_layer.local_to_map(global_position).x:
anim.play("walk")
anim.flip_h = true
but it seemed a bit clunky, and didn’t switch at the tiles I thought it would. I also tried to switch the script around to no avail.