Столкновение с трубами
Часть раздела Проекты путешествия по Godot на Coddy. Урок 23 из 33.
Столкновение с трубой или землёй должно завершать игру. И то и другое приводит к одной функции в main.gd:
func _on_crash():
$HUD/Message.text = "Game Over"
get_tree().paused = trueТруба. Труба — это Area2D с двумя фигурами: верхней и нижней половинами. У промежутка нет фигуры. В pipe.gd подключите body_entered и отправьте сигнал hit. В main.gd сигнал hit каждой новой трубы подключается перед её добавлением.
Земля. Её верхняя граница находится на y = 318. Край летуна находится в 12 пикселях от его середины, поэтому он касается земли, когда position.y превышает 306. Тогда flyer.gd отправляет сигнал crashed.
Летун, трубы и таймер можно приостанавливать, поэтому пауза останавливает их все.
Задание
Сложно- В
pipe.gdдобавьsignal hit. Подключиbody_enteredв_readyи отправляй сигналhit, когда тело входит. - В
flyer.gdдобавьsignal crashedи отправляй этот сигнал, когда значениеposition.yпревышает 306. - В
main.gdподключи сигналhitкаждой трубы и сигналcrashedперсонажа к_on_crash. Эта функция показываетGame Overи ставит игру на паузу.
Попробуйте сами
extends Node2D
const PIPE = preload("res://pipe.tscn")
func _ready():
$PipeTimer.timeout.connect(_on_pipe_timer_timeout)
func _on_pipe_timer_timeout():
var pipe = PIPE.instantiate()
pipe.position = Vector2(700, randf_range(100, 250))
$Pipes.add_child(pipe)
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Проекты
3Проект: Летающий птенец
Гравитация для птенцаВзмах крыльямиПотренируйтесь самостоятельно: Песочница Godot