extends CharacterBody3D const SPEED = 5.0 const JUMP_VELOCITY = 4.5 @export var CAMERA_SPEED = 0.01 @onready var camera := $Camera @onready var camera3d := $Camera/Camera3D var is_going= false var num = 0 var img_num # se vede un qualsiasi input func _unhandled_input(event: InputEvent) -> void: if event is InputEventMouseButton: Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) elif event.is_action_pressed("ui_cancel"): Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) if Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED: if event is InputEventMouseMotion: camera.rotate_y(-event.relative.x * CAMERA_SPEED) camera3d.rotate_x(-event.relative.y * CAMERA_SPEED) camera3d.rotation.x = clamp(camera3d.rotation.x, deg_to_rad(-50), deg_to_rad(60)) func _input(event: InputEvent) -> void: if event.is_action_pressed("fotocamera"): is_going = true if event.is_action_released("fotocamera"): is_going= false if event.is_action_pressed('screenshot') and is_going: take_screenshot() num+=1 print(num) func take_screenshot() -> void: img_num = str(num) get_viewport().get_texture().get_image().save_png('screenshot/image'+img_num+'.png') num+=1 print(num) func _physics_process(delta: float) -> void: # Add the gravity. if not is_on_floor(): velocity += get_gravity() * delta # Handle jump. if Input.is_action_just_pressed("ui_accept") and is_on_floor(): velocity.y = JUMP_VELOCITY # Get the input direction and handle the movement/deceleration. # As good practice, you should replace UI actions with custom gameplay actions. var input_dir := Input.get_vector("left", "right", "up", "down") var direction = (camera.transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized() if direction: velocity.x = direction.x * SPEED velocity.z = direction.z * SPEED else: velocity.x = move_toward(velocity.x, 0, SPEED) velocity.z = move_toward(velocity.z, 0, SPEED) move_and_slide()