extends Node2D var cowMoveOffset = 20 var mouseMoveSpeed = 300 func _ready(): process_mode = Node.PROCESS_MODE_ALWAYS func _process(delta): cow_movement() mouse_movement(delta) if Input.is_action_just_released("mouse_click_simulate"): click() func mouse_movement(delta): var mouseMovementVector = Input.get_vector("move_mouse_left", "move_mouse_right", "move_mouse_up", "move_mouse_down") if mouseMovementVector.length_squared() > 0: var currentMousePos = DisplayServer.mouse_get_position() - get_window().position var newMousepos = Vector2(currentMousePos) + (mouseMovementVector * mouseMoveSpeed * delta) Input.warp_mouse(newMousepos) func cow_movement(): var cowMovementVector = Input.get_vector("move_cow_left", "move_cow_right", "move_cow_up", "move_cow_down") if cowMovementVector.length_squared() > 0: var cow = GameVariables.player if is_instance_valid(cow) and cow != null: cow.set_target_position(cow.global_position + (cowMovementVector * cowMoveOffset)) func click(): var mouseEvent = InputEventMouseButton.new() mouseEvent.position = DisplayServer.mouse_get_position() - get_window().position mouseEvent.button_index = MOUSE_BUTTON_LEFT mouseEvent.pressed = true Input.parse_input_event(mouseEvent) await get_tree().process_frame mouseEvent.pressed = false Input.parse_input_event(mouseEvent)