my enemy now when aligned vertically with the player will just eat it?? it doesnt even move up to it the player straight up dissapears LOL. for reference it didnt do this before.
heres my script:
extends CharacterBody2D
signal caught_player(caught_position: Vector2)
var step_counter = 0
var player_position: Vector2 # stores initial position
var enemy_position: Vector2 # stores initial position
var tile_size: Vector2 # The size of one tile (retrieved from the TileMap)
var tilemap: TileMap # Reference to the TileMap
func _ready():
tilemap = get_parent().get_node("TileMap")
# Get the size of the tiles from the TileMap
tile_size = tilemap.tile_set.tile_size
func _on_player_moved(new_position: Vector2):
# called when player moves
if new_position != player_position:
player_position = new_position
step_counter += 1 # step counter increments when player moves
if step_counter >= 3 and (step_counter - 3) % 3 == 0:
# trigger the enemy to start moving after initial 3 steps
move_enemy_towards_player()
# detect if enemy caught player
# defined by if distance between the 2 entites is LESS THAN 1 tile
if (enemy_position - player_position) < tile_size:
# TODO: insert player caught logic
emit_signal("caught_player", enemy_position)
pass
func move_enemy_towards_player():
enemy_position = position # Get current enemy position
var x_dif = player_position.x - enemy_position.x
var y_dif = player_position.y - enemy_position.y
var move_vector = Vector2.ZERO
# Move only one tile per step
if abs(x_dif) > abs(y_dif):
move_vector.x = tile_size.x if x_dif > 0 else -tile_size.x
else:
move_vector.y = tile_size.y if y_dif > 0 else -tile_size.y
# Handle collisions
var collision_info = move_and_collide(move_vector)
if collision_info:
print("Collision detected, cannot move.")
else:
position += move_vector
enemy_position = position # Update enemy position
# Check if the enemy caught the player
if enemy_position == player_position:
emit_signal("caught_player", enemy_position)