Godot Playground

Exemples

133 projets qui s'ouvrent directement dans l'éditeur. Chacun est du GDScript pur qui construit sa propre scène, il n'y a donc rien à importer.

133 exemples sur 133
Mouvement12
2D

Balle rebondissante

Une balle traverse l'écran et rebondit sur les bords. La plus petite boucle qui soit : lire le delta, déplacer, inverser la vitesse.

Polygon2DColorRect
2D

Suivre la souris

Deux formes poursuivant la même cible, l'une avec lerp et l'autre avec move_toward. L'écart entre elles est toute la leçon.

Node2DPolygon2DInputEventMouseMotion
2D

Orbite et rotation

Trois Node2D imbriqués et deux rotations. L'enfant orbite parce que le parent tourne, et le petit-enfant orbite l'enfant.

Node2DLine2DPolygon2D
2D

Poursuivre et fuir

Le fuyard fuit la souris et le poursuivant suit le fuyard. Les deux utilisent direction_to, seul le signe change.

Node2DLine2DVector2
2D

Bouclage de l'écran

Un vaisseau façon Asteroids et huit rochers qui sortent par un bord et reviennent par l'autre. Deux appels à wrapf suffisent.

Node2DPolygon2DInput
2D

Traînée de souris

Un Line2D qui gagne un point là où est le pointeur et lâche le plus ancien une fois plein. La courbe de largeur et le dégradé font l'estompage.

Line2DGradientCurve
2D

Dessiner à la souris

Maintenez le bouton gauche pour dessiner. Chaque trait est un nouveau Line2D, et le bouton droit efface la toile.

Line2DInputEventMouseButtonInputEventMouseMotion
2D

Suivre une courbe

Une Curve2D construite point par point, dessinée avec tessellate et parcourue par trois PathFollow2D. La progression est la seule chose qui change.

Path2DPathFollow2DCurve2D
2D

Ressort amorti

Un ressort à amortissement critique et un suiveur en lerp poursuivant la même cible mobile. Le ressort tient le rythme, le lerp traîne derrière.

Polygon2DLine2DLabel
2D

Aimantation à la grille

Une position libre qui tourne en boucle et la même position passée par snapped. Le carré bleu ne se pose que sur des nœuds de la grille.

Polygon2DLine2DVector2
2D

Flotter et osciller

Neuf formes sur la même sinusoïde, chacune un pas de phase devant la précédente. Sans Tween et sans AnimationPlayer.

Node2DLine2DTime
2D

Image contre delta

La même constante de vitesse appliquée avec et sans delta, avec la distance parcourue sur chaque ligne. La seconde n'est rapide qu'à la mesure du framerate.

Polygon2DLabelEngine
Physique15
2D

Plateforme

Gravité, saut et détection du sol avec CharacterBody2D, sur des plateformes construites par code.

CharacterBody2DStaticBody2DCollisionShape2D
2D

Tas de caisses

Seize caisses lâchées entre deux murs. La première chose à essayer quand on veut voir le solveur travailler.

RigidBody2DCollisionShape2DRectangleShape2D
2D

Chaîne de joints

Douze maillons épinglés les uns aux autres et un poids au bout. Cliquez pour pousser la chaîne et la regarder se stabiliser.

PinJoint2DRigidBody2DStaticBody2D
2D

Joints à ressort

Trois ressorts de même longueur au repos avec des raideurs et des amortissements différents, côte à côte.

DampedSpringJoint2DRigidBody2DLine2D
2D

Détecteur de zone

Une zone qui compte ce qui la traverse, à l'aide des signaux body_entered et body_exited.

Area2DRigidBody2DLabel
2D

Cône de vision

Vingt-huit rayons déployés en éventail vers la souris. Chacun devient rouge là où il touche un mur, c'est la ligne de vue dans sa forme la plus simple.

RayCast2DLine2DStaticBody2D
2D

Shape cast

Une boîte qui demande où elle s'arrêterait avant de bouger. Le fantôme est la fraction sûre que le cast renvoie.

ShapeCast2DPolygon2DStaticBody2D
2D

Plateformes à sens unique

Sautez à travers les plateformes bleues par en dessous et posez-vous dessus par le haut. Une seule propriété fait tout.

CharacterBody2DCollisionShape2DStaticBody2D
2D

Rebond et friction

Trois balles lâchées de la même hauteur avec trois réglages de PhysicsMaterial. La valeur de bounce fait toute la différence.

PhysicsMaterialRigidBody2DStaticBody2D
2D

Tapis roulant

Deux tapis qui ne bougent pas d'un pixel. constant_linear_velocity entraîne tout ce qui les touche.

StaticBody2DRigidBody2DCollisionShape2D
2D

Souffle d'impulsion

Un mur de 54 caisses et un clic qui les repousse, avec une force qui décroît avec la distance.

RigidBody2DInputEventMouseButtonCollisionShape2D
3D

Chute physique

Cliquez pour lâcher un RigidBody3D sur le sol et le voir s'empiler. Ceux que vous créez se nettoient seuls au bout de dix secondes.

RigidBody3DStaticBody3DCollisionShape3D
3D

Chaîne de dominos

Vingt pièces sur une courbe et une impulsion sur la première. Tout le reste, c'est le solveur.

RigidBody3DBoxShape3DCamera3D
3D

Porte à charnière

Une porte tenue par une charnière avec limite d'angle. Cliquez pour la pousser et voir où la limite arrête le battant.

HingeJoint3DRigidBody3DStaticBody3D
3D

Cubes de gelée

Trois cubes SoftBody3D qui atterrissent avec des raideurs différentes. C'est le maillage lui-même qui se déforme.

SoftBody3DBoxMeshStaticBody3D
Particules6
Interface16
Control

Galerie de contrôles

Les contrôles de base sur un seul écran, chacun rendant compte au même label via son signal.

ButtonCheckBoxOptionButtonHSliderSpinBoxLineEdit
Control

Tour des conteneurs

Les mêmes quatre boîtes confiées à quatre conteneurs. La mise en page dans Godot, c'est choisir qui range les enfants.

VBoxContainerHBoxContainerGridContainerCenterContainer
Control

Ancres et préréglages

Six panneaux épinglés par des préréglages de mise en page. Redimensionnez le panneau de jeu et chacun garde son coin.

ControlPanelStyleBoxFlat
Control

Thème par code

Les mêmes trois nœuds deux fois, et la différence tient en une poignée de add_theme.

StyleBoxFlatButtonProgressBar
Control

Texte enrichi

Gras, couleur, wave, shake et rainbow, le tout en balises BBCode dans un seul label. Sans aucun nœud d'animation.

RichTextLabel
Control

Progression et minuteur

Un Timer qui remplit une barre, avec pause et reprise. La barre lit time_left, elle ne compte pas toute seule.

ProgressBarTimerButton
Control

Glisser-déposer

Des jetons passant d'un emplacement à l'autre. Trois méthodes font tout : _get_drag_data, _can_drop_data et _drop_data.

PanelContainerGridContainerColorRect
Control

Vue en arbre

Un arbre de scène à deux colonnes, construit depuis un dictionnaire imbriqué par une fonction récursive.

TreeTreeItem
Control

Liste d'inventaire

Un ItemList avec sélection multiple, qui retire les lignes sélectionnées et les remet.

ItemListButton
Control

Onglets et séparateurs

Un panneau latéral et trois onglets qui se partagent la largeur. Glissez le séparateur et les deux côtés suivent.

TabContainerHSplitContainerPanelContainer
Control

Graphe de nœuds

Quatre nœuds avec des ports que vous reliez en glissant. GraphEdit dessine la courbe, accepter la connexion vous revient.

GraphEditGraphNode
Control

Sélecteur de couleur

Le sélecteur complet relié à un aperçu en direct, à la valeur hexadécimale et à une rangée d'échantillons enregistrés.

ColorPickerColorRect
Control

Popups et dialogues

Un menu contextuel et deux dialogues, chacun répondant par son propre signal.

PopupMenuAcceptDialogConfirmationDialog
Control

Focus clavier

Neuf boutons reliés en anneau par focus_neighbor, parcourus avec tab et les flèches. Une interface qui marche sans souris.

ButtonGridContainer
Control

Joystick virtuel

Un stick qui se limite à son anneau et pilote un point. Sur un téléphone le même code répond au tactile.

PanelStyleBoxFlatInputEventMouseMotion
Control

Tableau de bord adaptatif

Six cartes dans une grille qui passe de trois colonnes à deux quand la fenêtre se resserre.

GridContainerPanelContainerMarginContainer
Scène 3D12
3D

Tour des primitives

Les six maillages primitifs sur un anneau qui tourne, chacun avec son propre matériau : métal, rugueux et émissif.

MeshInstance3DStandardMaterial3DDirectionalLight3D
3D

Grille en vague

Une grille de 196 cubes portés par une sinusoïde. Deux boucles imbriquées au montage, une ligne de maths par image.

MeshInstance3DBoxMeshCamera3D
3D

Déplacer un cube

WASD qui pilote un CharacterBody3D entre des piliers, avec une caméra qui suit derrière. Sans visée à la souris.

CharacterBody3DCamera3DStaticBody3D
3D

Caméra en orbite

Glissez avec le bouton gauche pour tourner la caméra autour de la pièce centrale, et utilisez la molette pour zoomer. Lacet, tangage et distance sont tout l'état.

Camera3DInputEventMouseMotionInputEventMouseButton
3D

Regarder la cible

Huit cônes appliquant look_at sur le même orbe en mouvement. Un appel par image remplace toute la trigonométrie.

Node3DMeshInstance3DOmniLight3D
3D

Système solaire

Des pivots Node3D imbriqués, chacun tournant à son rythme. Une lune orbite sa planète et hérite gratuitement de l'orbite de la planète.

Node3DMeshInstance3DOmniLight3D
3D

Formes CSG

Une boîte gardée en intersection avec une sphère, percée par trois cylindres qui alternent entre soustraction, union et intersection toutes les deux secondes.

CSGCombiner3DCSGBox3DCSGSphere3DCSGCylinder3D
3D

Forêt en MultiMesh

Quatre mille arbres dessinés par deux nœuds MultiMeshInstance3D, avec une couleur par instance sur les frondaisons.

MultiMeshInstance3DMultiMeshCylinderMesh
3D

Sprites en 3D

Des gemmes Sprite3D en billboard sur une texture peinte pixel par pixel en code, chacune nommée par un Label3D. Le panneau central garde le billboard désactivé pour comparer.

Sprite3DLabel3DImageTexture
3D

Tour des lumières

La même géométrie et le même matériau blanc trois fois. Un cull mask donne à chaque lumière son tiers de la scène.

OmniLight3DSpotLight3DDirectionalLight3D
3D

Reflection probe

Des sphères métalliques réfléchissant une pièce colorée sans réflexions en espace écran. Trois valeurs de rugosité montrent à quelle vitesse le miroir devient flou.

ReflectionProbeStandardMaterial3DCamera3D
3D

Bases de Transform

Cinq boîtes et cinq Transform3D écrits à la main : identité, origine, Basis tournée, Basis mise à l'échelle et les trois combinés. Un fantôme marque où se trouve l'identité.

Transform3DBasisMeshInstance3D
Shaders14
2DShader

Shader canvas

Un shader canvas plein écran animé par TIME. Changez un uniform, enregistrez, et le projet se recharge.

ColorRectShaderMaterialCanvasLayer
2DShader

Échange de palette

Le sprite stocke des indices de palette au lieu de couleurs, donc faire tourner la palette repeint tout le dessin.

Sprite2DImageTextureShaderMaterial
2DShader

Écran CRT

Courbure, scanlines et séparation chromatique sur une scène 2D ordinaire. Tout le rendu tient en une passe plein écran.

ColorRectCanvasLayerPolygon2D
2DShader

Vignettage et grain

Désaturation, vignettage et grain de pellicule sur une scène 3D, en onze lignes qui lisent la texture d'écran.

ColorRectCanvasLayerMeshInstance3D
3DShader

Shader spatial

Une sphère dont les sommets suivent une onde pendant que l'émission pulse, écrite dans un shader spatial.

MeshInstance3DShaderMaterialWorldEnvironment
3DShader

Dissolution

Une texture de bruit générée en GDScript et un discard dans le shader, avec un bord incandescent au seuil.

MeshInstance3DNoiseTexture2DFastNoiseLite
3DShader

Lumière de bord

L'angle entre la normale et la vue, élevé à une puissance. Trois formes, trois puissances de bord.

MeshInstance3DShaderMaterialWorldEnvironment
3DShader

Rendu toon

Un éclairage découpé en bandes dans la fonction light du shader, avec un point spéculaire net.

MeshInstance3DDirectionalLight3DShaderMaterial
3DShader

Shader de ciel

Un coucher de soleil procédural avec des étoiles, écrit en shader_type sky. Le disque solaire suit le nœud de lumière.

SkyShaderMaterialDirectionalLight3D
3DShader

Brouillard de profondeur

Un quad devant la caméra qui lit DEPTH_TEXTURE, le brouillard sait donc à quelle distance est chaque pixel.

QuadMeshCamera3DShaderMaterial
3DShader

Air chaud

Du bruit qui pousse l'UV d'écran, masqué à la moitié basse pour que la différence saute aux yeux.

ColorRectNoiseTexture2DCanvasLayer
3DShader

Plan d'eau

Des vagues dans le vertex shader avec la normale recalculée depuis la dérivée, la lumière les suit donc.

PlaneMeshShaderMaterialMeshInstance3D
3DShader

Grille infinie

Un plan et aucune texture. fwidth garde chaque ligne large d'un pixel quelle que soit la distance de la caméra.

PlaneMeshShaderMaterialCamera3D
3DShader

Mapping triplanaire

Quatre maillages sans carte UV, texturés par projection depuis les trois axes du monde et mélangés selon la normale.

MeshInstance3DNoiseTexture2DShaderMaterial
Procédural13
2D

Visualiseur de bruit

Les six types de FastNoiseLite côte à côte, même graine et sans fractal, pour que le caractère de chacun ressorte.

FastNoiseLiteNoiseTexture2DTextureRect
3D

Terrain par bruit

Une carte de hauteur transformée en ArrayMesh avec SurfaceTool, colorée par altitude via les couleurs de sommet.

SurfaceToolArrayMeshMeshInstance3D
2D

Générateur d'îles

Du bruit multiplié par un masque radial et peint dans une Image bande par bande. Cliquez pour une autre île.

FastNoiseLiteImageImageTexture
2D

Générateur de labyrinthe

Un labyrinthe parfait creusé par retour sur trace. Les couloirs apparaissent dans l'ordre où ils ont été creusés, colorés par cet ordre.

ImageImageTextureSprite2D
2D

Salles de donjon

Des salles placées sans se chevaucher, puis une marche aléatoire qui creuse le couloir entre chaque paire.

Polygon2DLine2DRect2i
2D

Arbre en L-system

Une chaîne réécrite quatre fois par deux règles puis lue comme des mouvements de tortue, un Line2D par branche.

Line2DLabel
2D

Champ de flux

Le bruit donne un angle à chaque point de l'écran. Les flèches montrent le champ et les particules le suivent.

FastNoiseLiteLine2D
2D

Marching squares

Le contour d'un champ de bruit, redessiné pendant que le seuil balaie. Le champ ne change jamais, seule la coupe change.

Node2DFastNoiseLiteLabel
3D

Lignes avec ImmediateMesh

Un maillage vidé et reconstruit sommet par sommet à chaque image, avec une bande de lignes et une surface de lignes.

ImmediateMeshMeshInstance3DStandardMaterial3D
3D

Solide avec SurfaceTool

Le même solide généré deux fois par SurfaceTool, à facettes et lissé. Seul le groupe de lissage change.

SurfaceToolArrayMeshLabel3D
3D

Voxels avec GridMap

Une MeshLibrary construite à l'exécution et une GridMap remplie depuis une carte de hauteur, un cube par cellule.

GridMapMeshLibraryBoxMesh
2D

TileMap par code

Un TileSet dont l'atlas est une Image peinte pixel par pixel, posée cellule par cellule sur un TileMapLayer.

TileMapLayerTileSetTileSetAtlasSource
2D

Outils de géométrie

Trois appels de Geometry2D avec le résultat dessiné : intersection de polygones, enveloppe convexe et décalage de polygone.

Geometry2DPolygon2DLine2D
Navigation9
2D

Agent 2D

Une région de navigation générée par code et un agent qui fait le tour de quatre coins. Cliquez n'importe où pour l'envoyer ailleurs.

NavigationRegion2DNavigationAgent2DNavigationPolygon
3D

Agent 3D

La même idée en trois dimensions, avec le NavigationMesh généré depuis des maillages primitifs au chargement. Cliquez le sol pour choisir une destination.

NavigationRegion3DNavigationAgent3DCharacterBody3D
2D

Obstacles dynamiques

Trois obstacles entrant et sortant du maillage de navigation. Chaque échange régénère la région et l'agent prend la voie encore ouverte.

NavigationObstacle2DNavigationRegion2DNavigationAgent2D
2D

AStarGrid2D

Une grille où les murs bloquent des cases et où les jaunes coûtent six fois plus à traverser. Le résultat est le trajet le moins cher, pas le plus court.

AStarGrid2DPolygon2DLine2D
2D

Graphe AStar2D

Quarante points reliés par distance, avec AStar2D calculant la route entre deux d'entre eux. Rien ici n'est une grille, le graphe est ce que vous reliez.

AStar2DLine2DPolygon2D
2D

Chercher et fuir

Chercher et fuir sont les deux mêmes lignes avec un signe inversé. Les vecteurs dessinés sont la vitesse désirée, l'actuelle et l'écart entre les deux.

Node2DPolygon2DLine2D
2D

Errance

Chaque agent vise un point qui ne glisse qu'un peu autour d'un cercle devant lui. C'est ce qui fait lire l'errance comme une intention plutôt qu'un bruit.

Node2DLine2DRandomNumberGenerator
2D

Boids

Soixante-douze boids appliquant séparation, alignement et cohésion à tout ce qui se trouve dans un petit rayon. Chacun est coloré selon le nombre de voisins qu'il voit.

Polygon2DLine2DNode2D
2D

Machine à états de patrouille

Un enum et un bloc match qui pilotent patrouille, poursuite et retour. La bande du bas montre les dernières secondes d'état.

Node2DLabelLine2D
Caméra8
2D

Suivi et limites

Une Camera2D avec lissage de position et les quatre propriétés de limite. La croix jaune est le centre de la caméra, on la voit donc s'arrêter au bord pendant que le joueur continue.

Camera2DLine2DPolygon2D
2D

Tremblement d'écran

Un trauma qui décroît avec le temps, échantillonné depuis FastNoiseLite vers l'offset et la rotation de la caméra. Une explosion part toutes les 1,2 seconde et le curseur la dose.

Camera2DFastNoiseLiteHSlider
2D

Zoom et panoramique

Glissez pour déplacer et roulez la molette pour zoomer sur le pointeur plutôt que sur le centre, ce qui tient en deux lignes de maths au-dessus de Camera2D.zoom.

Camera2DInputEventMouseButtonLine2D
3D

Rendu vers texture

Une scène 3D rendue dans un SubViewport et affichée comme la texture d'un moniteur posé sur un écran 2D.

SubViewportTextureRectCamera3D
3D

Écran partagé

Deux SubViewports côte à côte avec une caméra chacun, tous deux tournés vers le même World3D. Chaque volet suit son propre cube.

SubViewportSubViewportContainerCamera3D
2D

Minicarte

Une Camera2D éloignée dans un SubViewport qui partage le World2D du jeu. Le HUD est hors de ce monde, c'est pourquoi il n'apparaît pas sur la carte.

SubViewportCamera2DWorld2D
2D

Couches de parallaxe

Trois couches Parallax2D avec des scroll_scale différents, répétées par repeat_size pour que les crêtes ne manquent jamais pendant le déplacement.

Parallax2DCamera2DPolygon2D
3D

Troisième personne 3D

Un SpringArm3D qui rapproche la caméra quand un mur s'intercale entre elle et le personnage. Le relevé compare spring_length à la longueur réellement obtenue.

SpringArm3DCamera3DCharacterBody3D
Animation9
2D

Courbes de tween

Cinq carrés traversent l'écran, un par courbe de transition. Le moyen le plus rapide de voir ce que fait chaque easing.

TweenPolygon2DLabel
2D

Tweens enchaînés

Un tween qui exécute quatre étapes à la suite. tween_callback allume l'étape à l'écran et parallel met deux propriétés sur la même étape.

TweenPolygon2DLine2D
2D

Animation par code

Une piste de position et une de couleur écrites clé par clé au démarrage, sans aucun fichier .anim. La timeline en dessous montre les mêmes clés que le code a insérées.

AnimationPlayerAnimationAnimationLibrary
2D

Ressource Curve

Une Curve construite point par point et lue avec sample(t). Le graphe est dessiné depuis la ressource qui déplace le carré, à côté d'un carré mû par le seul temps.

CurveLine2DPolygon2D
2D

Sprite frames par code

Un cycle de marche de huit images peint dans des buffers Image au démarrage puis confié à un AnimatedSprite2D. La bande du bas est le SpriteFrames lui-même.

AnimatedSprite2DSpriteFramesImageTexture
2D

Squelette 2D

Un bras articulé fait d'un seul Polygon2D skinné sur deux os. Tourner un Bone2D déplace les sommets pondérés dessus.

Skeleton2DBone2DPolygon2D
2D

Squash et stretch

Le même saut avec le même timing des deux côtés, et seul celui de droite anime l'échelle. Trois lignes de plus font toute la différence.

TweenPolygon2DColorRect
2D

Animation par état

Repos, préparation, ruée et récupération, chacun avec son tween. Entrer dans un état tue le tween du précédent, ils ne se disputent donc jamais la même propriété.

TweenPolygon2DLabel
3D

Pose de squelette 3D

Une chaîne de six os créée par code et posée à chaque image avec set_bone_pose_rotation. Chaque BoneAttachment3D porte le maillage qui suit son os.

Skeleton3DBoneAttachment3DMeshInstance3D
Audio6
Entrées5
Données8
Control

Signaux personnalisés

Un nœud déclare un signal et n'apprend jamais qui écoute. Cinq panneaux s'y connectent et s'allument quand leur tour vient.

signalSignal.emitSignal.connectPanelContainer
2D

Groupes de nœuds

Soixante-douze carrés répartis en quatre groupes. Un call_group atteint chaque membre d'une bande sans une seule référence.

Node.add_to_groupSceneTree.call_groupPolygon2D
Control

Sauvegarder et charger

Un dictionnaire d'état de scène écrit dans user:// en JSON, avec le contenu du fichier affiché à côté des valeurs en direct.

FileAccessJSONDirAccess
Control

Resource personnalisée

Une Resource avec class_name utilisée comme donnée typée. Six éléments partagent le script et chaque carte se redessine via le signal changed.

Resourceclass_nameResource.changedGDScript
2D

Pool d'objets

Deux fontaines émettant au même rythme, l'une allouant chaque particule et l'autre les reprenant d'un pool. Ce sont les compteurs qui argumentent.

Node.queue_freePolygon2DPerformance
Control

Panneau de benchmark

Images par seconde, mémoire statique et nombre de nœuds échantillonnés chaque image dans trois graphes vivants, pendant qu'une vague de nœuds est créée et supprimée.

PerformanceControl._drawCanvasItem.draw_polyline
Control

Aléatoire avec graine

Trois colonnes issues de trois générateurs. Les deux qui partagent une graine produisent les mêmes nombres à chaque fois, le troisième non.

RandomNumberGeneratorProgressBar
Control

Callables et lambdas

Six opérations rangées dans un tableau comme Callables, cinq lambdas et une méthode avec bind, chacune confiée à Array.map sur les mêmes nombres.

CallableCallable.bindArray.map