Случайные полосы
Часть раздела Правила игры путешествия по Godot на Coddy. Урок 21 из 29.
Для некоторых случайных выборов требуется целое число, например одна из пяти полос или результат броска кубика.
randi_range(a, b) возвращает случайное целое число от a до b включительно:
var roll = randi_range(1, 6) # 1, 2, 3, 4, 5 или 6Ширина экрана — 640 пикселей, поэтому ширина каждой из пяти полос составляет 128 пикселей. Умножь номер полосы на 128, затем прибавь 64, чтобы попасть в середину полосы:
var lane = randi_range(0, 4)
spawn(lane * 128 + 64)В результате получаются значения x = 64, 192, 320, 448 или 576, и ничего между ними.
Задание
ЛегкоСделай так, чтобы блоки падали по пяти дорожкам.
- В
_on_spawn_timer_timeout()выбери дорожку с помощьюvar lane = randi_range(0, 4). - Создавай блок в позиции
lane * 128 + 64.
Нажми «Играть»: блоки падают ровными колонками. Затем нажми «Проверить».
Попробуйте сами
extends Node2D
var block_scene = preload("res://block.tscn")
func _ready():
$SpawnTimer.timeout.connect(_on_spawn_timer_timeout)
func _on_spawn_timer_timeout():
spawn(randf_range(40, 600))
func spawn(x):
var block = block_scene.instantiate()
block.position = Vector2(x, -30)
add_child(block)
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Правила игры
4Спавн
Упакованная сценаРазместите новый узелФункция спавнаСпавн по таймеруСлучайные позицииСлучайные полосыПотренируйтесь самостоятельно: Песочница Godot