Отскок от ракетки
Часть раздела Проекты путешествия по Godot на Coddy. Урок 4 из 36.
Мяч проходит сквозь ракетку. Мяч — это 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.
Задание
СреднеЗаставь мяч отскакивать от платформы.
- В
ball.gdподключиbody_enteredк_on_body_enteredв_ready. - Когда имя тела —
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
Все уроки раздела Проекты
Потренируйтесь самостоятельно: Песочница Godot