Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
GPUParticles2D
Успадковує: Node2D < CanvasItem < Node < Object
Емітатор частинок 2D.
Опис
2D використовується для створення різних систем частинок і ефектів. GPUParticles2D містить випромінювач, який генерує певну кількість частинок при даній швидкості.
Використовуйте власність process_material для додавання ParticleProcessMaterial для налаштування зовнішнього вигляду частинок і поведінки. Крім того, ви можете додати ShaderMaterial, який буде застосовуватися до всіх частинок.
2D частинки можуть необов'язково зв'язатися з LightOccluder2D, але вони не збігаються з PhysicsBody2D вершинами.
Посібники
Властивості
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
NodePath |
|
|
Texture2D |
||
|
||
|
||
|
||
|
||
|
||
Rect2 |
|
Методи
Rect2 |
capture_rect() const |
void |
convert_from_particles(particles: Node) |
void |
emit_particle(xform: Transform2D, velocity: Vector2, color: Color, custom: Color, flags: int) |
void |
request_particles_process(process_time: float, process_time_residual: float = 0) |
void |
Сигнали
finished() 🔗
Випромінюється, коли всі активні частинки закінчили обробку. Щоб негайно перезапустити цикл викидів, викличте restart().
Цей сигнал ніколи не випромінюється, коли one_shot вимкнено, оскільки частинки випромінюються та обробляються постійно.
Примітка: Для випромінювачів one_shot, через те, що частинки обчислюються графічним процесором, може бути короткий період після отримання сигналу, протягом якого налаштування emitting на true не перезапустить цикл випромінювання. Цю затримку можна уникнути шляхом виклику restart().
Переліки
enum DrawOrder: 🔗
DrawOrder DRAW_ORDER_INDEX = 0
Терміни нараховуються в порядку, передбаченому.
DrawOrder DRAW_ORDER_LIFETIME = 1
Терміни нараховуються в порядку денного життя. Іншими словами, частинка з найвищим терміном придатна на фронті.
DrawOrder DRAW_ORDER_REVERSE_LIFETIME = 2
Терміни нараховуються у зворотному порядку решти життя. Іншими словами, частинка з найнижчим терміном наноситься на передній.
enum EmitFlags: 🔗
EmitFlags EMIT_FLAG_POSITION = 1
На вказаному положенні стартує частинка.
EmitFlags EMIT_FLAG_ROTATION_SCALE = 2
Частка починається з вказаного обертання і ваги.
EmitFlags EMIT_FLAG_VELOCITY = 4
Частинка починається з вказаного вектора швидкості, який визначає напрямок викидів і швидкість.
EmitFlags EMIT_FLAG_COLOR = 8
Стіч починається з вказаного кольору.
EmitFlags EMIT_FLAG_CUSTOM = 16
Наклад починається з вказаних CUSTOM даних.
Описи властивостей
Кількість частинок для випромінювання в одному циклі випромінювання. Ефективна швидкість емісії (amount * amount_ratio) / життя частинки на секунду. Більші значення підвищать вимоги до GPU, навіть якщо не всі частинки видимі в обумовлений час або якщо знизився кількість пам'яті.
Примітка: Зміна цього значення призведе до перезавантаження системи частинок. Щоб уникнути цього, змініть amount_ratio замість.
Співвідношення частинок, які насправді повинні бути введеними. Якщо встановити значення нижче 1.0, це буде встановлено кількість вживаних частинок протягом усього життя amount * кількість_ratio. На відміну від зміни amount, зміни amount_ratio при випромінюванні не впливає вже наявні частинки і не викликає системи частинок для перезавантаження. amount_ratio може бути використана для створення ефектів, які роблять число вживаних частинок варіюватися з часом.
Примітка: Зменшення amount_ratio не має допомоги продуктивності, так як ресурси повинні бути виділені і оброблені для всього amount частинок незалежно від amount_ratio. Якщо ви не маєте намір змінити кількість частинок, які випромінюються, тоді як частинки випромінюють, переконайтеся, що кількість_ratio встановлюється до 1 і змініть amount до вашої кришки замість.
float collision_base_size = 1.0 🔗
Multiplier для радіусу зіткнення частинок. 1.0 відповідає розміру спрайта. Якщо з'являються частинки, щоб мити в грунт, коли з'єднання, збільшити це значення. Якщо частинки з'являються до плавлення при співвідношенні, знижують це значення. Тільки ефективний, якщо ParticleProcessMaterial.collision_mode є ParticleProcessMaterial. COLLISION_RIGID або ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT.
Примітки: Завжди мають сферичну форму зіткнення.
Порядок малювання частинок.
Якщо true, частинки вдаються. пам'ятне випромінювання може бути використаний для запуску та припинення частинок з випромінювання. Однак, якщо one_shot є true налаштування emitting до true не перезапустити цикл викидів, якщо всі активні частинки закінчилися обробки. Використовуйте finished сигнал, який буде повідомлено один раз, коли всі активні обробки частинок.
Примітка: Для one_shot випромінювачів, через частинки, що комп'ютерні на GPU, може бути короткий період після отримання сигналу finished, під час якого налаштування цього true не буде перезапустити цикл емісії.
Підказка: Якщо ваш one_shot випромінювач повинен негайно перезапустити частинки після отримання сигналу, розгляньте виклик restart() замість налаштування emitting.
Як швидко викидаються частинки в циклі емісії. Якщо більше 0, з'явиться проміжок викидів до наступного циклу.
Швидкість рами частинок фіксується до значення. Наприклад, зміна значення до 2 призведе до зменшення частинок на 2 кадри на другий. Зверніть увагу, що це не уповільнює моделювання самої системи частинок.
Якщо true, результати розрахунку дробової дельти, яка має ефект відображення гладких частинок.
Причини всіх частинок в цій вершині, щоб міжполятися до кінця їх життя.
Примітка: Це тільки працює при використанні ParticleProcessMaterial. Необхідно вручну втілювати шейкери на замовлення.
Вмикає інтерполяцію частинок, що робить рух частинок плавнішим, коли їхній fixed_fps нижчий за частоту оновлення екрана.
Кількість часу кожної частинки буде існувати (в секундах). Ефективна швидкість емісії `` (amount * amount_ratio) / термін служби`` частинки на секунду.
Якщо true, частинки використовують координаційний простір материнської вершини (відомі як локальні координати). Це спричинить частинки для переміщення і обертання вздовж вузла GPUParticles2D (і його батьки), коли він переміщається або обертається. Якщо false, частинки використовують глобальні координати; вони не рухаються або обертаються вздовж вузла GPUParticles2D (і його батьки), коли він переміщається або обертається.
Якщо true, виникає лише один цикл викидів. Якщо встановити true під час циклу, емісія буде припинена в кінці циклу.
Система частинок запускається так, ніби вона вже працювала стільки секунд.
Примітка: Це може бути дуже дорогим, якщо встановлено велике число, оскільки це вимагає запуску шейдера частинок кількість разів, що дорівнює fixed_fps (або 30, якщо fixed_fps дорівнює 0) за кожну секунду. У крайніх випадках це може навіть призвести до збою GPU через обсяг роботи, виконаної в одному кадрі.
Material для обробки частинок. Може бути ParticleProcessMaterial або ShaderMaterial.
Відносність термінів життя емісії.
Встановлює випадкове початкове число, яке використовується системою частинок. Ефективно, лише якщо use_fixed_seed має значення true.
Співвідношення швидкості масштабування частинок. Значення 0 можна використовувати для паузи частинок.
NodePath sub_emitter = NodePath("") 🔗
void set_sub_emitter(value: NodePath)
NodePath get_sub_emitter()
Шлях до іншої GPUParticles2D вершина, яка буде використовуватися як підеміттер (див. ParticleProcessMaterial.sub_emitter_mode). Для досягнення ефектів, таких як феєрверки, іскри на зіткненні, бульбашки, що тиснуть на краплі води, і багато іншого.
Примітка: Коли sub_emitter встановлюється, ціль GPUParticles2D вузол більше не буде випромінювати частинки самостійно.
Texture2D texture 🔗
void set_texture(value: Texture2D)
Texture2D get_texture()
Текстура частинок. Якщо null, частинки будуть квадрати розміром 1×1 пікселів.
Примітка: Щоб використовувати текстуру flipbook, призначте новий CanvasItemMaterial до GPUParticles2D CanvasItem.material, потім увімкніть CanvasItemMaterial.paarticle_animation і встановіть CanvasItemMaterial.article_anim_h_frames, CanvasItemMaterial.paarticle_anim_v_frames, і CanvasItemMaterial.article_anim_loop, щоб відповідати текстурі фліпбук.
Якщо true, активує траєкторії частинок за допомогою системи обшивки сітки.
Примітка: На відміну від GPUParticles3D, кількість секцій та підрозділів стежки встановлюється за допомогою властивостей trail_sections та trail_section_subdivisions.
Кількість часу слід представляти частинку (в секундах). true.
int trail_section_subdivisions = 4 🔗
Кількість підрозділів, які використовують для рендерингу частинок. Більші значення можуть призвести до гладких кривих причепів, за вартістю виконання за рахунок підвищеної складності сітки. Дивись також trail_enabled. true.
Кількість секцій для використання для рендерингу частинок. Більші значення можуть призвести до гладких кривих причепів, за вартістю виконання за рахунок підвищеної складності сітки. Дивись також trail_enabled. true.
Якщо true, частинки використовуватимуть той самий сімпл для кожної симуляції, використовуючи сімпл, визначений у seed. Це корисно у ситуаціях, коли візуальний результат має бути однаковим у всіх відтвореннях, наприклад, при використанні режиму Movie Maker.
Rect2 visibility_rect = Rect2(-100, -100, 200, 200) 🔗
void set_visibility_rect(value: Rect2)
Rect2 get_visibility_rect()
Rect2, що визначає область вершини, яка повинна бути видима на екрані для системи частинок, щоб бути активним.
Виростити ct, якщо частинки раптом з'являються / з'являються, коли вершина надходить / виводить екран. Rect2 може бути вирощений за допомогою коду або з Пачастини → Генерувати Visibility Rect редактор інструмент.
Описи методів
Rect2 capture_rect() const 🔗
Повертає прямокутник, що містить позиції всіх наявних частинок.
Примітка: При використанні різьбового рендерингу цей метод синхронізує рендерингову нитку. Викликання часто може мати негативний вплив на продуктивність.
void convert_from_particles(particles: Node) 🔗
Налаштовує властивості цього вузла, щоб відповідати даній CPUParticles2D вершині.
void emit_particle(xform: Transform2D, velocity: Vector2, color: Color, custom: Color, flags: int) 🔗
Випромінює одну частинку. Чи застосовуються xform, velocity, color і custom, залежить від значення flags. Див. EmitFlags.
За замовчуванням ParticleProcessMaterial перезапише color і використає вміст custom як (rotation, age, animation, lifetime).
Примітка: emit_particle() підтримується лише методами візуалізації Forward+ і Mobile, а не Compatibility.
void request_particles_process(process_time: float, process_time_residual: float = 0) 🔗
Requests the particles to process for extra process time during a single frame.
process_time defines the time that the particles will process while emitting is on. process_time_residual defines the time that particles will process with emitting turned off for the simulation. When combined with speed_scale set to 0.0, this is useful to be able to seek a particle system timeline.
void restart(keep_seed: bool = false) 🔗
Перезапускає цикл викиду частинок, очищаючи існуючі частинки. Щоб уникнути зникнення частинок із вікна перегляду, дочекайтеся сигналу finished перед викликом.
Примітка: Сигнал finished випромінюють лише випромінювачі one_shot.
Якщо keep_seed має значення true, поточне випадкове початкове число буде збережено. Корисно для пошуку та відтворення.