Limitar al área de la pantalla
Parte de la sección Entrada y movimiento del Journey de Godot de Coddy. Lección 21 de 28.
Corre hacia la izquierda y el héroe sale de la pantalla. clamp(value, low, high) mantiene un número entre dos extremos. Devuelve low si value está por debajo, high si value está por encima y value en los demás casos. clamp(700, 14, 626) es 626.
Limita la posición después de moverte y guarda el resultado:
move_and_slide()
position.x = clamp(position.x, 14, 626)position es el centro del héroe, y el héroe mide 28 píxeles de ancho. Así que su centro se mantiene a 14 píxeles de cada borde de la pantalla de 640 píxeles, y el héroe entero permanece a la vista.
Desafío
FácilMantén a todo el héroe en la pantalla.
- Después de
move_and_slide(), estableceposition.xconclamp(). - Limítalo entre
14y626.
Pulsa «Jugar» y corre hacia cada lado: el héroe se detiene en el borde, completamente dentro de la pantalla. Después, pulsa «Comprobar».
Pruébalo tú mismo
extends CharacterBody2D
var speed = 220
var acceleration = 900
var friction = 2400
var gravity = 1000
var jump_velocity = -500
func _physics_process(delta):
velocity.y += gravity * delta
if Input.is_action_just_pressed("jump") and is_on_floor():
velocity.y = jump_velocity
var direction = Input.get_axis("move_left", "move_right")
if direction == 0:
velocity.x = move_toward(velocity.x, 0, friction * delta)
else:
velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)
if direction > 0:
$Look.scale.x = 1
if direction < 0:
$Look.scale.x = -1
move_and_slide()
Todas las lecciones de Entrada y movimiento
1Acciones de entrada
Presiona para moverteIzquierda y derechaUn ejeCuatro direccionesRecién presionadoEntrada no gestionada4Movimiento fluido
Acelerar poco a pocoFricciónMirar hacia donde te muevesLimitar al área de la pantallaLimitar ambos ejesPractica por tu cuenta: Playground de Godot