Menu
CoddyTech
flag Ru iconРусскийdown icon

Отскок от ракетки

Часть раздела Проекты путешествия по Godot на Coddy. Урок 4 из 33.

Мяч проходит сквозь ракетку. Мяч — это Area2D. Его сигнал body_entered срабатывает, когда тело, например ракетка, касается мяча. Направь мяч вверх, если это тело — ракетка:

func _ready():
	body_entered.connect(_on_body_entered)

func _on_body_entered(body):
	if body.name == "Paddle":
		velocity.y = -abs(velocity.y)

abs() убирает знак минус, поэтому -abs(velocity.y) всегда направлено вверх. Второе касание не сможет отправить мяч обратно вниз.

Чтобы игрок мог выбирать направление, задай velocity.x в зависимости от места удара мяча. position.x - body.position.x — это расстояние от мяча до середины ракетки. Слева оно отрицательное, а справа — положительное. Умножь его на 5.

challenge icon

Задание

Средне

В ball.gd заставь мяч отскакивать от платформы:

  1. Подключи body_entered к _on_body_entered в _ready.
  2. Если имя тела — Paddle, установи velocity.x в (position.x - body.position.x) * 5, а velocity.y — в -abs(velocity.y).

Попробуйте сами

extends Area2D

var velocity = Vector2(110, -280)

func _physics_process(delta):
	position += velocity * delta
	if position.x < 8 or position.x > 632:
		velocity.x = -velocity.x
	if position.y < 42:
		velocity.y = -velocity.y
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Проекты

Потренируйтесь самостоятельно: Песочница Godot