Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
Utiliser les Area2D¶
Introduction¶
Godot offre un certain nombre d'objets de collision pour assurer à la fois la détection et la réponse aux collisions. Essayer de décider lequel utiliser pour votre projet peut prêter à confusion. Vous pouvez éviter les problèmes et simplifier le développement si vous comprenez comment chacun d'eux fonctionne et quels sont leurs avantages et leurs inconvénients. Dans ce tutoriel, nous allons regarder le nœud Area2D et montrer quelques exemples d'utilisation.
Note
Ce document suppose que vous connaissez les différents corps physiques de Godot. Veuillez d'abord lire Introduction à la physique.
Qu'est-ce qu'une zone ?¶
Un Area2D définit une région d'espace 2D. Dans cet espace, vous pouvez détecter d'autres nœuds CollisionObject2D qui se chevauchent, entrent et sortent. Les zones permettent également d'outrepasser les propriétés physiques locales. Nous allons explorer chacune de ces fonctions ci-dessous.
Propriétés de zone¶
Les zones ont de nombreuses propriétés que vous pouvez utiliser pour personnaliser leur comportement.
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).
Détection de chevauchement¶
L'utilisation la plus courante des nœuds Area2D est peut-être la détection de contact et de chevauchement. Lorsque vous avez besoin de savoir que deux objets se sont touchés, mais n'ont pas besoin de collision physique, vous pouvez utiliser une zone pour vous informer du contact.
Par exemple, disons que nous faisons une pièce de monnaie que le joueur doit ramasser. La pièce n'est pas un objet solide - le joueur ne peut pas se tenir dessus ou la pousser - nous voulons juste qu'elle disparaisse quand le joueur la touche.
Voici la configuration du nœud pour la pièce :
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.
Note
Si vous n'êtes pas familier avec l'utilisation des signaux, voir Utiliser les signaux pour une introduction.
extends Area2D
func _on_coin_body_entered(body):
queue_free()
using Godot;
public partial class Coin : Area2D
{
private void OnCoinBodyEntered(PhysicsBody2D body)
{
QueueFree();
}
}
Maintenant, notre joueur peut ramasser les pièces !
Quelques autres exemples d'utilisation :
Les zones sont idéales pour les balles et autres projectiles qui frappent et infligent des dégâts, mais qui n'ont pas besoin d'autres caractéristiques physiques comme le rebondissement.
Utilisez une grande surface circulaire autour d'un ennemi pour définir son rayon de "détection". Quand le joueur est en dehors de la zone, l'ennemi ne peut pas le "voir".
"Caméras de sécurité" - Dans un grand niveau avec plusieurs caméras, fixez des zones à chaque caméra et activez-les lorsque le joueur entre.
Voir la Votre premier jeu en 2D pour un exemple d'utilisation d'Area2D dans un jeu.
Influence de la zone¶
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 - La zone ajoute ses valeurs à ce qui a été calculé jusqu'à présent.
Replace - La zone remplace les propriétés physiques, et les zones moins prioritaires sont ignorées.
Combine-Replace - La zone ajoute ses valeurs de gravité/amortissement à ce qui a été calculé jusqu'à présent (par ordre de priorité), sans tenir compte des zones moins prioritaires.
Replace-Combine - La zone remplace toute gravité/amortissement calculée jusqu'à présent, mais continue de calculer le reste des zones.
En utilisant ces propriétés, vous pouvez créer un comportement très complexe avec plusieurs zones qui se chevauchent.
Les propriétés physiques qui peuvent être surchargées sont :
Gravity - La force de la gravité à l'intérieur de la zone.
Gravity Direction - This vector does not need to be normalized.
Linear Damp - La vitesse à laquelle les objets s'arrêtent de bouger - vitesse linéaire perdue par seconde.
Angular Damp - La vitesse à laquelle les objets s'arrêtent de tourner - vitesse angulaire perdue par seconde.
Point gravity¶
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.
Exemples¶
L'exemple de projet ci-dessous présente trois zones faisant la démonstration de la surcharge de la physique.
You can download this project here: area_2d_starter.zip