Menu
CoddyTech

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 repisa 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 repisa es 158. Así que el héroe está en la repisa cuando está en el suelo y position.y es menor que 170:

if is_on_floor() and position.y < 170:
	$Banner.visible = true

La 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 al escalón y, después, a la repisa.

challenge icon

Desafío

Intermedio

Muestra el Banner del héroe cuando esté en el borde, en el suelo con position.y por debajo de 170. Después, llega tú mismo al borde.

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)
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Entrada y movimiento

Practica por tu cuenta: Playground de Godot