Godot Playground

Exemplos

133 projetos que abrem direto no editor. Todos são GDScript puro que monta a própria cena, então não há nada para importar.

133 de 133 exemplos
Movimento12
2D

Bola quicando

Uma bola atravessando a tela e quicando nas bordas. O menor loop que existe: lê o delta, move, inverte a velocidade.

Polygon2DColorRect
2D

Seguir o mouse

Duas formas perseguindo o mesmo alvo, uma com lerp e outra com move_toward. A diferença entre elas é a lição inteira.

Node2DPolygon2DInputEventMouseMotion
2D

Órbita e giro

Três Node2D aninhados e duas rotações. O filho orbita porque o pai gira, e o neto orbita o filho.

Node2DLine2DPolygon2D
2D

Perseguir e fugir

O fugitivo foge do mouse e o perseguidor segue o fugitivo. Os dois usam direction_to, só o sinal muda.

Node2DLine2DVector2
2D

Wrap na tela

Uma nave estilo Asteroids e oito pedras que saem por uma borda e voltam pela outra. Duas chamadas de wrapf fazem isso.

Node2DPolygon2DInput
2D

Rastro do mouse

Um Line2D que ganha um ponto onde o ponteiro está e descarta o mais antigo quando enche. A curva de largura e o gradiente fazem o desvanecer.

Line2DGradientCurve
2D

Desenhar com o mouse

Segure o botão esquerdo para desenhar. Cada traço é um Line2D novo, e o botão direito limpa a tela.

Line2DInputEventMouseButtonInputEventMouseMotion
2D

Seguir uma curva

Uma Curve2D montada ponto a ponto, desenhada com tessellate e percorrida por três PathFollow2D. O progresso é a única coisa que muda.

Path2DPathFollow2DCurve2D
2D

Mola amortecida

Uma mola criticamente amortecida e um seguidor com lerp rastreando o mesmo alvo em movimento. A mola acompanha, o lerp fica para trás.

Polygon2DLine2DLabel
2D

Encaixe na grade

Uma posição livre andando em loop e a mesma posição passada por snapped. O quadrado azul só para em nós da grade.

Polygon2DLine2DVector2
2D

Flutuar e balançar

Nove formas na mesma onda senoidal, cada uma um passo de fase à frente da anterior. Sem Tween e sem AnimationPlayer.

Node2DLine2DTime
2D

Quadro contra delta

A mesma constante de velocidade aplicada com e sem delta, com a distância percorrida em cada linha. A segunda só é rápida na medida da taxa de quadros.

Polygon2DLabelEngine
Física15
2D

Plataforma

Gravidade, pulo e detecção de chão com CharacterBody2D, sobre plataformas construídas por código.

CharacterBody2DStaticBody2DCollisionShape2D
2D

Pilha de caixas

Dezesseis caixas soltas entre duas paredes. A primeira coisa para experimentar quando você quer ver o solver trabalhando.

RigidBody2DCollisionShape2DRectangleShape2D
2D

Corrente de juntas

Doze elos presos uns nos outros e um peso na ponta. Clique para empurrar a corrente e veja ela se acomodar.

PinJoint2DRigidBody2DStaticBody2D
2D

Juntas de mola

Três molas com o mesmo comprimento de repouso e rigidez e amortecimento diferentes, lado a lado.

DampedSpringJoint2DRigidBody2DLine2D
2D

Detector de área

Uma zona que conta o que cai por ela, usando os sinais body_entered e body_exited.

Area2DRigidBody2DLabel
2D

Cone de visão

Vinte e oito raios abertos em leque na direção do mouse. Cada um fica vermelho onde bate numa parede, que é linha de visão na forma mais simples.

RayCast2DLine2DStaticBody2D
2D

Shape cast

Uma caixa que pergunta onde pararia antes de se mover. O fantasma é a fração segura que o cast devolve.

ShapeCast2DPolygon2DStaticBody2D
2D

Plataformas de mão única

Pule através das plataformas azuis por baixo e pouse nelas por cima. Uma propriedade faz tudo isso.

CharacterBody2DCollisionShape2DStaticBody2D
2D

Quique e atrito

Três bolas soltas da mesma altura com três configurações de PhysicsMaterial. O valor de bounce é toda a diferença.

PhysicsMaterialRigidBody2DStaticBody2D
2D

Esteira

Duas esteiras que não andam um pixel. O constant_linear_velocity arrasta o que estiver encostando nelas.

StaticBody2DRigidBody2DCollisionShape2D
2D

Impulso de clique

Uma parede de 54 caixas e um clique que as afasta, com a força caindo pela distância.

RigidBody2DInputEventMouseButtonCollisionShape2D
3D

Queda com física

Clique para soltar um RigidBody3D no chão e veja a pilha crescer. Os que você cria se limpam sozinhos depois de dez segundos.

RigidBody3DStaticBody3DCollisionShape3D
3D

Fila de dominós

Vinte peças numa curva e um impulso na primeira. Tudo depois disso é o solver.

RigidBody3DBoxShape3DCamera3D
3D

Porta com dobradiça

Uma porta presa por uma dobradiça com limite de ângulo. Clique para empurrar e veja onde o limite trava o giro.

HingeJoint3DRigidBody3DStaticBody3D
3D

Cubos de gelatina

Três cubos SoftBody3D caindo com rigidez diferente. É a própria malha que deforma.

SoftBody3DBoxMeshStaticBody3D
Partículas6
Interface16
Control

Galeria de controles

Os controles básicos numa tela só, cada um reportando ao mesmo label através do seu sinal.

ButtonCheckBoxOptionButtonHSliderSpinBoxLineEdit
Control

Tour de containers

As mesmas quatro caixas entregues a quatro containers. Layout no Godot é escolher quem organiza os filhos.

VBoxContainerHBoxContainerGridContainerCenterContainer
Control

Âncoras e presets

Seis painéis fixados com presets de layout. Redimensione o painel do jogo e cada um mantém o seu canto.

ControlPanelStyleBoxFlat
Control

Tema por código

Os mesmos três nós duas vezes, e a diferença é um punhado de add_theme.

StyleBoxFlatButtonProgressBar
Control

Texto rico

Negrito, cor, wave, shake e rainbow, tudo isso em tags BBCode dentro de um label. Sem nenhum nó de animação envolvido.

RichTextLabel
Control

Progresso e timer

Um Timer enchendo uma barra, com pausar e retomar. A barra lê o time_left, ela não conta sozinha.

ProgressBarTimerButton
Control

Arrastar e soltar

Fichas passando de um slot para outro. Três métodos fazem tudo: _get_drag_data, _can_drop_data e _drop_data.

PanelContainerGridContainerColorRect
Control

Árvore

Uma árvore de cena com duas colunas, construída de um dicionário aninhado por uma função recursiva.

TreeTreeItem
Control

Lista de inventário

Um ItemList com seleção múltipla, removendo as linhas selecionadas e devolvendo elas.

ItemListButton
Control

Abas e divisões

Um painel lateral e três abas dividindo a largura. Arraste o divisor e os dois lados acompanham.

TabContainerHSplitContainerPanelContainer
Control

Grafo de nós

Quatro nós com portas que você liga arrastando. O GraphEdit desenha a curva, aceitar a conexão é decisão sua.

GraphEditGraphNode
Control

Seletor de cor

O seletor completo ligado a uma prévia ao vivo, ao valor em hex e a uma fileira de amostras salvas.

ColorPickerColorRect
Control

Popups e diálogos

Um menu de contexto e dois diálogos, cada um respondendo pelo próprio sinal.

PopupMenuAcceptDialogConfirmationDialog
Control

Foco de teclado

Nove botões ligados em anel pelo focus_neighbor, percorridos com tab e as setas. Interface que funciona sem mouse.

ButtonGridContainer
Control

Joystick virtual

Um analógico que se prende ao seu anel e conduz um ponto. No celular o mesmo código responde ao toque.

PanelStyleBoxFlatInputEventMouseMotion
Control

Painel responsivo

Seis cards numa grade que vai de três colunas para duas quando a viewport fica estreita.

GridContainerPanelContainerMarginContainer
Cena 3D12
3D

Tour de primitivas

As seis malhas primitivas num anel girando, cada uma com o próprio material: metal, rugoso e emissivo.

MeshInstance3DStandardMaterial3DDirectionalLight3D
3D

Grade em onda

Uma grade de 196 cubos surfando uma onda senoidal. Dois loops aninhados na montagem, uma linha de matemática por quadro.

MeshInstance3DBoxMeshCamera3D
3D

Mover um cubo

WASD conduzindo um CharacterBody3D entre pilares, com uma câmera que vem atrás. Sem olhar com o mouse.

CharacterBody3DCamera3DStaticBody3D
3D

Câmera em órbita

Arraste com o botão esquerdo para girar a câmera em volta da peça central, e use a roda para dar zoom. Yaw, pitch e distância são todo o estado.

Camera3DInputEventMouseMotionInputEventMouseButton
3D

Olhar para o alvo

Oito cones rodando look_at no mesmo orbe em movimento. Uma chamada por quadro substitui toda a trigonometria.

Node3DMeshInstance3DOmniLight3D
3D

Sistema solar

Pivôs Node3D aninhados, cada um girando no próprio ritmo. Uma lua orbita seu planeta e herda a órbita do planeta de graça.

Node3DMeshInstance3DOmniLight3D
3D

Formas CSG

Uma caixa mantida em interseção com uma esfera, furada por três cilindros que alternam entre subtração, união e interseção a cada dois segundos.

CSGCombiner3DCSGBox3DCSGSphere3DCSGCylinder3D
3D

Floresta com MultiMesh

Quatro mil árvores desenhadas por dois nós MultiMeshInstance3D, com uma cor por instância nas copas.

MultiMeshInstance3DMultiMeshCylinderMesh
3D

Sprites em 3D

Gemas Sprite3D em billboard sobre uma textura pintada pixel a pixel em código, cada uma nomeada por um Label3D. A placa do centro mantém o billboard desligado para comparação.

Sprite3DLabel3DImageTexture
3D

Tour de luzes

A mesma geometria e o mesmo material branco três vezes. Uma cull mask dá a cada luz o seu terço da cena.

OmniLight3DSpotLight3DDirectionalLight3D
3D

Reflection probe

Esferas metálicas espelhando uma sala colorida sem reflexos em espaço de tela. Três valores de rugosidade mostram como o espelho vira borrão.

ReflectionProbeStandardMaterial3DCamera3D
3D

Básico de Transform

Cinco caixas e cinco Transform3D escritos à mão: identidade, origem, Basis rotacionada, Basis escalada e os três combinados. Um fantasma marca onde fica a identidade.

Transform3DBasisMeshInstance3D
Shaders14
2DShader

Shader de canvas

Um shader de canvas em tela cheia animado pelo TIME. Mude um uniform, salve, e o projeto recarrega.

ColorRectShaderMaterialCanvasLayer
2DShader

Troca de paleta

O sprite guarda índices de paleta em vez de cores, então trocar a paleta repinta a arte inteira.

Sprite2DImageTextureShaderMaterial
2DShader

Tela de CRT

Curvatura, scanlines e separação cromática sobre uma cena 2D comum. O visual inteiro é um passe em tela cheia.

ColorRectCanvasLayerPolygon2D
2DShader

Vinheta e grão

Dessaturação, vinheta e grão de filme sobre uma cena 3D, em onze linhas que leem a textura da tela.

ColorRectCanvasLayerMeshInstance3D
3DShader

Shader spatial

Uma esfera cujos vértices surfam uma onda enquanto a emissão pulsa, escrita num shader spatial.

MeshInstance3DShaderMaterialWorldEnvironment
3DShader

Dissolver

Uma textura de ruído gerada em GDScript e um discard no shader, com uma borda em brasa no limiar.

MeshInstance3DNoiseTexture2DFastNoiseLite
3DShader

Luz de contorno

O ângulo entre a normal e a visão, elevado a uma potência. Três formas, três potências de contorno.

MeshInstance3DShaderMaterialWorldEnvironment
3DShader

Sombreamento toon

Iluminação dividida em faixas dentro da função light do shader, com um ponto especular duro.

MeshInstance3DDirectionalLight3DShaderMaterial
3DShader

Shader de céu

Um pôr do sol procedural com estrelas, escrito como shader_type sky. O disco do sol segue o nó de luz.

SkyShaderMaterialDirectionalLight3D
3DShader

Névoa por profundidade

Um quad na frente da câmera lendo a DEPTH_TEXTURE, então a névoa sabe a que distância está cada pixel.

QuadMeshCamera3DShaderMaterial
3DShader

Ondas de calor

Ruído empurrando a UV da tela, mascarado para a metade de baixo para a diferença ficar fácil de ver.

ColorRectNoiseTexture2DCanvasLayer
3DShader

Plano de água

Ondas no vertex shader com a normal recalculada pela derivada, então a luz acompanha as ondas.

PlaneMeshShaderMaterialMeshInstance3D
3DShader

Grade infinita

Um plano e nenhuma textura. O fwidth mantém cada linha com um pixel de largura, não importa a distância da câmera.

PlaneMeshShaderMaterialCamera3D
3DShader

Mapeamento triplanar

Quatro malhas sem mapa de UV, texturizadas por projeção dos três eixos do mundo e mescladas pela normal.

MeshInstance3DNoiseTexture2DShaderMaterial
Procedural13
2D

Visualizador de ruído

Os seis tipos de FastNoiseLite lado a lado, mesma seed e sem fractal, para o caráter de cada um aparecer.

FastNoiseLiteNoiseTexture2DTextureRect
3D

Terreno por ruído

Um mapa de altura virando uma ArrayMesh com SurfaceTool, colorido por altura através de cores de vértice.

SurfaceToolArrayMeshMeshInstance3D
2D

Gerador de ilhas

Ruído multiplicado por uma máscara radial e pintado numa Image faixa por faixa. Clique para outra ilha.

FastNoiseLiteImageImageTexture
2D

Gerador de labirinto

Um labirinto perfeito escavado por backtracking. As passagens aparecem na ordem em que foram abertas, coloridas por essa ordem.

ImageImageTextureSprite2D
2D

Salas de masmorra

Salas posicionadas sem se sobrepor, e um passeio aleatório cavando o corredor entre cada par.

Polygon2DLine2DRect2i
2D

Árvore por L-system

Uma string reescrita quatro vezes por duas regras e depois lida como movimentos de tartaruga, um Line2D por galho.

Line2DLabel
2D

Campo de fluxo

O ruído dá um ângulo a cada ponto da tela. As setas mostram o campo e as partículas o seguem.

FastNoiseLiteLine2D
2D

Marching squares

O contorno de um campo de ruído, redesenhado conforme o limiar varre. O campo nunca muda, só o corte.

Node2DFastNoiseLiteLabel
3D

Linhas com ImmediateMesh

Uma malha limpa e reconstruída vértice a vértice a cada quadro, com uma tira de linhas e uma superfície de linhas.

ImmediateMeshMeshInstance3DStandardMaterial3D
3D

Sólido com SurfaceTool

O mesmo sólido gerado duas vezes pelo SurfaceTool, plano e suave. Só o grupo de suavização muda.

SurfaceToolArrayMeshLabel3D
3D

Voxels com GridMap

Uma MeshLibrary montada em tempo de execução e um GridMap preenchido por um mapa de altura, um cubo por célula.

GridMapMeshLibraryBoxMesh
2D

TileMap por código

Um TileSet cujo atlas é uma Image pintada pixel a pixel, colocada célula a célula num TileMapLayer.

TileMapLayerTileSetTileSetAtlasSource
2D

Ajudantes de geometria

Três chamadas de Geometry2D com o resultado desenhado: interseção de polígonos, envoltória convexa e offset de polígono.

Geometry2DPolygon2DLine2D
Navegação9
2D

Agente 2D

Uma região de navegação gerada por código e um agente percorrendo quatro cantos por ela. Clique em qualquer lugar para mandá-lo para outro ponto.

NavigationRegion2DNavigationAgent2DNavigationPolygon
3D

Agente 3D

A mesma ideia em três dimensões, com a NavigationMesh gerada de malhas primitivas no carregamento. Clique no chão para escolher o destino.

NavigationRegion3DNavigationAgent3DCharacterBody3D
2D

Obstáculos dinâmicos

Três obstáculos entrando e saindo da malha de navegação. Cada troca refaz a região e o agente pega a faixa que ainda estiver aberta.

NavigationObstacle2DNavigationRegion2DNavigationAgent2D
2D

AStarGrid2D

Uma grade onde paredes bloqueiam células e as amarelas custam seis vezes mais para atravessar. O resultado é a rota mais barata, não a mais curta.

AStarGrid2DPolygon2DLine2D
2D

Grafo AStar2D

Quarenta pontos ligados por distância, com o AStar2D traçando rota entre dois deles. Nada aqui é uma grade, o grafo é o que você conectar.

AStar2DLine2DPolygon2D
2D

Buscar e fugir

Buscar e fugir são as mesmas duas linhas com um sinal trocado. Os vetores desenhados são a velocidade desejada, a atual e a diferença entre elas.

Node2DPolygon2DLine2D
2D

Perambular

Cada agente mira num ponto que desliza só um pouco em torno de um círculo à frente dele. É isso que faz perambular parecer intenção em vez de ruído.

Node2DLine2DRandomNumberGenerator
2D

Boids

Setenta e dois boids rodando separação, alinhamento e coesão contra tudo dentro de um raio pequeno. Cada um é colorido por quantos vizinhos consegue ver.

Polygon2DLine2DNode2D
2D

Máquina de estados de patrulha

Um enum e um bloco match conduzindo patrulha, perseguição e retorno. A tira embaixo são os últimos segundos de estado.

Node2DLabelLine2D
Câmera8
2D

Seguir e limitar

Uma Camera2D com suavização de posição e as quatro propriedades de limite. A cruz amarela é o centro da câmera, então dá para vê-la parar na borda enquanto o jogador continua andando.

Camera2DLine2DPolygon2D
2D

Tremor de tela

Trauma decaindo com o tempo, amostrado do FastNoiseLite para o offset e a rotação da câmera. Uma explosão dispara a cada 1,2 segundo e o slider escala o efeito.

Camera2DFastNoiseLiteHSlider
2D

Zoom e pan

Arraste para mover e role a roda para dar zoom no ponteiro em vez do centro da tela, o que são duas linhas de matemática em cima do Camera2D.zoom.

Camera2DInputEventMouseButtonLine2D
3D

Render para textura

Uma cena 3D renderizada dentro de um SubViewport e mostrada como a textura de um monitor que fica numa tela 2D.

SubViewportTextureRectCamera3D
3D

Tela dividida

Dois SubViewports lado a lado com uma câmera cada, os dois olhando para o mesmo World3D. Cada painel segue o próprio cubo.

SubViewportSubViewportContainerCamera3D
2D

Minimapa

Uma Camera2D afastada num SubViewport que compartilha o World2D do jogo. O HUD fica fora desse mundo, que é por isso que ele não aparece no mapa.

SubViewportCamera2DWorld2D
2D

Camadas de parallax

Três camadas Parallax2D com scroll_scale diferente, repetidas pelo repeat_size para as cristas nunca acabarem enquanto a câmera anda.

Parallax2DCamera2DPolygon2D
3D

Terceira pessoa 3D

Um SpringArm3D que puxa a câmera para perto quando uma parede entra entre ela e o personagem. O painel compara o spring_length com o comprimento que o braço realmente conseguiu.

SpringArm3DCamera3DCharacterBody3D
Animação9
2D

Curvas de tween

Cinco quadrados atravessando a tela, um por curva de transição. O jeito mais rápido de ver o que cada easing faz.

TweenPolygon2DLabel
2D

Tweens em sequência

Um tween rodando quatro passos em fila. O tween_callback acende o passo na tela e o parallel põe duas propriedades no mesmo passo.

TweenPolygon2DLine2D
2D

Animação por código

Uma track de posição e uma de cor escritas chave por chave no início, sem nenhum arquivo .anim. A linha do tempo abaixo mostra as mesmas chaves que o código inseriu.

AnimationPlayerAnimationAnimationLibrary
2D

Recurso Curve

Uma Curve montada ponto a ponto e lida com sample(t). O gráfico é desenhado do mesmo recurso que move o quadrado, ao lado de um quadrado movido só pelo tempo.

CurveLine2DPolygon2D
2D

Sprite frames por código

Um ciclo de caminhada de oito quadros pintado em buffers de Image no início e entregue a um AnimatedSprite2D. A tira embaixo é o próprio SpriteFrames.

AnimatedSprite2DSpriteFramesImageTexture
2D

Esqueleto 2D

Um braço articulado feito de um único Polygon2D com skin em dois ossos. Girar um Bone2D move os vértices com peso nele.

Skeleton2DBone2DPolygon2D
2D

Squash e stretch

O mesmo pulo com o mesmo tempo dos dois lados, e só o da direita faz tween na escala. Três linhas a mais são toda a diferença.

TweenPolygon2DColorRect
2D

Animação por estado

Parado, preparação, avanço e recuperação, cada um com seu tween. Entrar num estado mata o tween do anterior, então eles nunca brigam pela mesma propriedade.

TweenPolygon2DLabel
3D

Pose de esqueleto 3D

Uma corrente de seis ossos criada por código e posicionada a cada quadro com set_bone_pose_rotation. Cada BoneAttachment3D carrega a malha que anda com o seu osso.

Skeleton3DBoneAttachment3DMeshInstance3D
Áudio6
Entrada5
Dados8
Control

Sinais próprios

Um nó declara um sinal e nunca fica sabendo quem escuta. Cinco painéis se conectam a ele e acendem quando chega a vez de cada um.

signalSignal.emitSignal.connectPanelContainer
2D

Grupos de nós

Setenta e dois quadrados divididos em quatro grupos. Um call_group alcança todo membro de uma turma sem uma única referência.

Node.add_to_groupSceneTree.call_groupPolygon2D
Control

Salvar e carregar

Um dicionário com o estado da cena gravado em user:// como JSON, com o conteúdo do arquivo mostrado ao lado dos valores vivos.

FileAccessJSONDirAccess
Control

Resource próprio

Um Resource com class_name usado como dado tipado. Seis itens compartilham o script e cada card se redesenha pelo sinal changed.

Resourceclass_nameResource.changedGDScript
2D

Pool de objetos

Duas fontes emitindo no mesmo ritmo, uma alocando cada partícula e outra pegando de volta de um pool. Os contadores é que discutem.

Node.queue_freePolygon2DPerformance
Control

Painel de benchmark

Quadros por segundo, memória estática e contagem de nós amostrados a cada quadro em três gráficos vivos, enquanto uma onda de nós é criada e removida.

PerformanceControl._drawCanvasItem.draw_polyline
Control

Aleatório com seed

Três colunas de três geradores. Os dois que compartilham a seed produzem os mesmos números toda vez, o terceiro não.

RandomNumberGeneratorProgressBar
Control

Callables e lambdas

Seis operações guardadas num array como Callables, cinco lambdas e um método com bind, cada uma entregue ao Array.map sobre os mesmos números.

CallableCallable.bindArray.map