Телепортация игрока через границы экрана (wrap) в Godot

Проблема

Вы хотите разрешить игроку в Godot перемещаться через границу экрана (wrap), телепортируясь с одной стороны на другую. Это обычная функция, особенно в старых 2D-играх.

Решение

Получите размер вашего экрана (вьюпорта)

@onready var screen_size = get_viewport_rect().size

get_viewport_rect() доступна для любого узла, унаследованного от CanvasItem.

Сравните позицию вашего игрока

if position.x > screen_size.x:
    position.x = 0
if position.x < 0:
    position.x = screen_size.x
if position.y > screen_size.y:
    position.y = 0
if position.y < 0:
    position.y = screen_size.y

Обратите внимание, что здесь используется позиция узла, которая обычно является центром вашего спрайта и/или тела.

Используйте wrapf()

Вышеуказанный код можно упростить с использованием функции wrapf() в GDScript, которая «зацикливает» значение между заданными пределами.

position.x = wrapf(position.x, 0, screen_size.x)
position.y = wrapf(position.y, 0, screen_size.y)
Screen Wrap in 2 minutes! Godot TutorialScreen Wrap in 2 minutes! Godot Tutorial

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

2 + 19 =

Прокрутить вверх