Menu
CoddyTech

Движущиеся астероиды

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

Камни должны двигаться. rock.gd перемещает каждый камень со скоростью velocity, медленно вращает его и переносит на другую сторону, как корабль.

Камень большой, поэтому он появляется с другой стороны при координатах -30 и 670 вместо 0 и 640. Так он полностью покидает экран, прежде чем вернуться. Смещение составляет 700 — ширину этой более широкой полосы:

if position.x > 670:
	position.x -= 700

Левый край, а также верхний и нижний работают так же: координаты -30 и 390 и смещение 420.

challenge icon

Задание

Сложно

Заставь камни дрейфовать, вращаться и перемещаться на противоположную сторону экрана.

  1. В rock.gd добавь _physics_process: перемещай объект на velocity * delta и прибавляй 0.5 * delta к rotation.
  2. Если объект выходит за -30 или 670 по x, перемести его на 700 в другую сторону.
  3. Если объект выходит за -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