Движущиеся астероиды
Часть раздела Проекты путешествия по Godot на Coddy. Урок 16 из 36.
Камни должны двигаться. rock.gd перемещает каждый камень со скоростью velocity, медленно вращает его и переносит на другую сторону, как корабль.
Камень большой, поэтому он появляется с другой стороны при координатах -30 и 670 вместо 0 и 640. Так он полностью покидает экран, прежде чем вернуться. Смещение составляет 700 — ширину этой более широкой полосы:
if position.x > 670:
position.x -= 700Левый край, а также верхний и нижний работают так же: координаты -30 и 390 и смещение 420.
Задание
СложноЗаставь камни дрейфовать, вращаться и перемещаться на противоположную сторону экрана.
- В
rock.gdдобавь_physics_process: перемещай объект наvelocity * deltaи прибавляй0.5 * deltaкrotation. - Если объект выходит за
-30или670по x, перемести его на700в другую сторону. - Если объект выходит за
-30или390по y, перемести его на420в другую сторону.
Нажми «Играть»: камни кувыркаются по экрану и возвращаются. Затем нажми «Проверить».
Попробуйте сами
extends Area2D
var velocity = Vector2.ZERO
# Bursts into dust where the rock is. Call it when the rock breaks.
func burst():
var dust = CPUParticles2D.new()
dust.position = position
dust.one_shot = true
dust.explosiveness = 1.0
dust.amount = 20
dust.lifetime = 0.7
dust.spread = 180.0
dust.gravity = Vector2.ZERO
dust.initial_velocity_min = 30.0
dust.initial_velocity_max = 120.0 * scale.x
dust.scale_amount_min = 2.0
dust.scale_amount_max = 5.0
dust.color = Color(0.75, 0.82, 0.95)
dust.finished.connect(dust.queue_free)
get_parent().add_child(dust)
dust.emitting = true
Все уроки раздела Проекты
Потренируйтесь самостоятельно: Песочница Godot