class_name UnitDefault extends Unit var speed := 1000.0 var direction := Vector2.RIGHT func _physics_process(delta: float) -> void: if not is_on_floor(): velocity.x = 0 velocity += get_gravity() * delta * Game.speed $AnimatedSprite.play("fall") if $RayLeft.is_colliding(): direction = Vector2.RIGHT elif $RayRight.is_colliding(): direction = Vector2.LEFT if is_on_floor(): velocity.x = direction.x * speed * delta * Game.speed $AnimatedSprite.play("walk") $AnimatedSprite.flip_h = direction.x < 0 move_and_slide() var collision = get_last_slide_collision() if collision: var collider = collision.get_collider() as TileMapLayer if collider is TileMapLayer: var cell = collider.get_cell_tile_data(collider.get_coords_for_body_rid(collision.get_collider_rid())) as TileData cell.set_collision_polygon_points(0, 0, PackedVector2Array([ Vector2(-7,-7), Vector2(-7,7), Vector2(7,7), Vector2(7,-7) ])) func _on_input_event(_viewport: Node, event: InputEvent, _shape_idx: int) -> void: if event.is_action_pressed("select"): get_viewport().set_input_as_handled() var blocker = preload("res://Units/Blocker.tscn").instantiate() blocker.position = global_position get_tree().current_scene.add_child(blocker) queue_free() if event.is_action_pressed("select2"): get_viewport().set_input_as_handled() var blocker = preload("res://Units/Digger.tscn").instantiate() blocker.position = global_position get_tree().current_scene.add_child(blocker) queue_free()