Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
Использование Area2D¶
Введение¶
Godot предлагает ряд объектов столкновений в 2D и 3D как для обнаружения столкновений, так и для реагирования на них. Определение, какие из них использовать в Вашем проекте, может оказаться сложным. Избежать проблем и упростить разработку можно, если понимать, как работает каждый из них и каковы его достоинства и недостатки. В этом учебном пособии мы рассмотрим узел Area2D и покажем некоторые примеры его использования.
Примечание
Этот документ предполагает, что вы знакомы с различными физическими телами Godot. Сначала прочитайте Введение в физику.
Что такое область?¶
Area2D определяет область в 2D пространстве. В этой области можно обнаруживать перекрытия, вхождения и выходы с другими узлами CollisionObject2D. Области также позволяют переопределять свойства локальной физики. Ниже мы рассмотрим каждую из этих функций.
Свойства области¶
Области имеют множество свойств, которые можно использовать для настройки их поведения.
The Gravity
, Linear Damp
, and Angular Damp
sections
are used to configure the area's physics override behavior.
We'll look at how to use those in the Area influence section below.
Monitoring
and Monitorable
are used to enable and disable the area.
The Audio Bus
section allows you to override audio in the area, for example to
apply an audio effect when the player moves through.
Note that Area2D extends CollisionObject2D, so it
also provides properties inherited from that class.
The Collision
section of CollisionObject2D
is where you configure the
area's collision layer(s) and mask(s).
Обнаружение перекрытий¶
Возможно, наиболее распространенным использованием узлов Area2D является обнаружение контактов и перекрытий. Если нужно знать, что два объекта коснулись, но они не нуждаются в симуляции физического столкновения, можно использовать область для уведомления о контакте.
Например, мы делаем монету для игрока. Монета не является твердым объектом. Игрок не может стоять на ней или толкать её. Мы просто хотим, чтобы она исчезла, когда игрок прикасается к ней.
Вот настройка узла для монеты:
To detect the overlap, we'll connect the appropriate signal on the Area2D. Which
signal to use depends on the player's node type. If the player is another area,
use area_entered
. However, let's assume our player is a CharacterBody2D
(and therefore a CollisionObject2D
type), so we'll connect the
body_entered
signal.
Примечание
Если вы не знакомы с использованием сигналов, см. Использование сигналов для введения.
extends Area2D
func _on_coin_body_entered(body):
queue_free()
using Godot;
public partial class Coin : Area2D
{
private void OnCoinBodyEntered(PhysicsBody2D body)
{
QueueFree();
}
}
Теперь наш игрок может собирать монеты!
Некоторые другие примеры использования:
Области отлично подходят для пуль и других снарядов, которые поражают и наносят ущерб, но не нуждаются в какой-либо другой физике, такой как отскок.
Используйте большую круговую область вокруг противника для задания радиуса обнаружения. Когда игрок находится за пределами области противник не может его «увидеть».
«Камеры безопасности» — на большом уровне с несколькими камерами прикрепите области к каждой камере и активируйте их при входе игрока.
См. Ваша первая 2D игра для примера использования Area2D в игре.
Области влияния¶
The second major use for area nodes is to alter physics. By default, the area
won't do this, but you can enable this with the Space Override
property. When
areas overlap, they are processed in Priority
order (higher priority areas are
processed first). There are four options for override:
Combine — область добавляет свои значения к вычисленным на данный момент значениям.
Replace — область заменяет физические свойства, а области с более низким приоритетом игнорируются.
Combine-Replace — область добавляет свои значения силы тяжести/упругости к тем значениям, которые были рассчитаны до этого момента (в порядке приоритета), игнорируя любые области с более низким приоритетом.
Replace-Combine — область заменяет любую рассчитанную до этого момента гравитацию/упругость, но продолжает вычислять остальные области.
С помощью этих свойств можно создать очень сложное поведение с несколькими перекрывающимися областями.
Физические свойства, которые можно переопределить:
Gravity — Сила гравитации внутри области.
Gravity Direction - This vector does not need to be normalized.
Linear Damp — Как быстро объекты перестают двигаться — уменьшение линейной скорости в секунду.
Angular Damp — Как быстро объекты перестают вращаться — уменьшение угловой скорости в секунду.
Точечная сила тяжести¶
The Gravity Point
property allows you to create an "attractor". Gravity in the
area will be calculated towards a point, given by the Point Center
property.
Values are relative to the Area2D, so for example using (0, 0)
will attract
objects to the center of the area.
Примеры¶
Приведенный ниже пример проекта имеет три области, демонстрирующие переопределение физики.
You can download this project here: area_2d_starter.zip