Вхождение и выход за пределы экрана в Godot

Проблема

Вы хотите определить, когда объект входит или выходит за пределы экрана.

Решение

Для этого движок Godot предоставляет узел: VisibleOnScreenNotifier2D. Присоедините этот узел к вашему объекту, и вы сможете использовать его сигналы screen_entered и screen_exited. *

Пример 1

Предположим, у нас есть снаряд, который движется по прямой после выстрела. Если мы продолжим стрелять, в конечном итоге у нас будет большое количество объектов для отслеживания движком, даже если они находятся за пределами экрана, что может вызвать задержки.

Вот код движения для снаряда:

extends Area2D

var velocity = Vector2(500, 0)

func _process(delta):
    position += velocity * delta

Для автоматического удаления снаряда при его выходе за пределы экрана добавьте VisibleOnScreenNotifier2D и подключите его сигнал screen_exited.

func _on_VisibleOnScreenNotifier2D_screen_exited():
    queue_free()

Пример 2

У нас есть враг, который выполняет различные действия, такие как движение по пути или проигрывание анимации. На большой карте с множеством врагов только несколько из них будут на экране одновременно. Мы можем отключить действия врага, когда он находится за пределами экрана, используя VisibleOnScreenNotifier2D.

Частичный код:

var active = false

func _process(delta):
    if active:
        play_animation()
        move()

func _on_VisibleOnScreenNotifier2D_screen_entered():
    active = true

func _on_VisibleOnScreenNotifier2D_screen_exited():
    active = false

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

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

5 + 11 =

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