Héroe: llegar al borde
Parte de la sección Entrada y movimiento del Journey de Godot de Coddy. Lección 28 de 28.
El objetivo es la cornisa alta con la bandera. El héroe lleva un Banner, un Label oculto que dice ¡Lo lograste!
En el suelo, el valor de position.y del héroe es 278. En el escalón es 218 y en la cornisa, 158. Así que el héroe está en la cornisa cuando está en el suelo y position.y es menor que 170:
if is_on_floor() and position.y < 170:
$Banner.visible = trueLa parte is_on_floor() es importante. Un salto desde el suelo también pasa por 170 durante un momento, pero en el aire.
Para ganar, salta el foso, después sube al escalón y, por último, a la cornisa.
Desafío
IntermedioMuestra un cartel cuando el héroe llegue al borde.
- Al final de
_physics_process(), agrega unif:is_on_floor()yposition.y < 170. - Dentro, muestra
$Banner.
Pulsa «Jugar» y sube hasta el borde: You made it! aparece en el cartel. Después, pulsa «Comprobar».
Pruébalo tú mismo
extends CharacterBody2D
var speed = 220
var acceleration = 1200
var friction = 2400
var gravity = 1000
var jump_velocity = -500
var start_position = Vector2()
func _ready():
start_position = position
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()
if position.y > 400:
position = start_position
velocity = Vector2(0, 0)
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Entrada y movimiento
2CharacterBody2D
CharacterBody2DCamina con velocidadLas paredes te detienenCamina por todas partesDiagonales equilibradas5Proyecto: Héroe de plataformas
Héroe: correrHéroe: saltarPractica por tu cuenta: Playground de Godot