TEXTURA QUE SE MOVIMENTA
- Exposure: public
- UE Version: 5.6
ctrl + v
1 comment
-
Perfeito. Agora vou descer até o nível iniciante mesmo, clique por clique, sem pular nada. Segue exatamente nessa ordem e não inventa moda 😉
Vou assumir Unreal Engine 5, mas funciona igual no 4.
🧠 CRIANDO AS VARIÁVEIS DO MUNDO – PASSO A PASSO 📌 VISÃO GERAL (antes de começar)
Você vai criar:
Enums (tipos de estado)
Um GameInstance
Variáveis dentro do GameInstance
🟢 PARTE 1 — CRIAR OS ENUMS (UM POR VEZ)
Enums são só listas de opções. Exemplo: Manhã / Tarde / Noite.
🕰️ ENUM 1 — HORA DO DIA PASSO A PASSO:
No Content Drawer
Clique com o botão direito
Blueprints → Enumeration
Nomeie: E_TimeOfDay
Dê duplo clique para abrir
Dentro do Enum:
Clique em New Enumerator
Renomeie para:
Morning
Clique em New Enumerator
Afternoon
Clique em New Enumerator
Night
Compile / Save
✅ Pronto.
🤠 ENUM 2 — TENSÃO DA CIDADE
Repita o processo:
Botão direito → Blueprints → Enumeration
Nome: E_CityTension
Abra o Enum
Adicione:
Calm
Suspicious
Hostile
Compile / Save
🔫 ENUM 3 — ESTADO DA LEI
Botão direito → Blueprints → Enumeration
Nome: E_LawState
Valores:
Strong
Weak
None
Compile / Save
☠️ ENUM 4 — PERIGO DO DESERTO
Botão direito → Blueprints → Enumeration
Nome: E_DesertDanger
Valores:
Low
Medium
High
Compile / Save
💥 Agora você tem os 4 tipos de estado do mundo.
🟢 PARTE 2 — CRIAR O GAMEINSTANCE DO MUNDO
Agora o “cérebro”.
🧩 CRIANDO O GAMEINSTANCE
Botão direito no Content Drawer
Blueprint Class
Expanda All Classes
Procure por GameInstance
Selecione GameInstance
Nome: GI_WorldState
Abra o Blueprint
🟢 PARTE 3 — CRIAR AS VARIÁVEIS (CLIQUE POR CLIQUE) 🕰️ VARIÁVEL 1 — HORA DO DIA
No GI_WorldState
Painel My Blueprint
Clique em + Variable
Nome: TimeOfDay
No painel Details:
Variable Type → selecione E_TimeOfDay
Compile
Default Value:
Morning
🤠 VARIÁVEL 2 — TENSÃO DA CIDADE
- Variable
Nome: CityTension
Variable Type:
E_CityTension
Compile
Default Value:
Calm
🔫 VARIÁVEL 3 — ESTADO DA LEI
- Variable
Nome: LawState
Variable Type:
E_LawState
Compile
Default Value:
Strong
☠️ VARIÁVEL 4 — PERIGO DO DESERTO
- Variable
Nome: DesertDanger
Variable Type:
E_DesertDanger
Compile
Default Value:
Low
🎉 Pronto. As variáveis estão criadas.
🟢 PARTE 4 — ATIVAR O GAMEINSTANCE NO PROJETO (MUITO IMPORTANTE)
Se você não fizer isso, não funciona.
Edit → Project Settings
Vá em Maps & Modes
Em Game Instance Class
Selecione: GI_WorldState
Save
🟢 PARTE 5 — TESTE RÁPIDO (CONFIRMA SE DEU CERTO)
Em qualquer Blueprint:
Get Game Instance
Cast to GI_WorldState
Arraste:
Get CityTension
Print String
Se aparecer Calm, funcionou ✅
🧠 RESUMO FINAL (SEM COMPLICAÇÃO)
✔ 4 Enums ✔ 1 GameInstance ✔ 4 Variáveis ✔ Sem Tick ✔ Sem IA complexa
Você agora tem um mundo que lembra tudo.
🔥 PRÓXIMO PASSO?
Quer que eu te ensine:
NPC reagindo a essas variáveis
Eventos aleatórios do Velho Oeste
Salvar isso no SaveGame
Clima + som mudando com o estado
👉 Qual você quer agora?
agora com fazer os npc reagir a isso
Perfeito. Agora vem a parte mais importante: fazer o NPC reagir ao mundo sem IA complexa, só estado → reação.
Vou explicar passo a passo, clique por clique, do jeito mais simples possível.
🤠 NPC REAGINDO AO ESTADO DO MUNDO (SEM IA COMPLEXA)
Vamos usar:
BeginPlay
GameInstance
Switch on Enum
Sets simples (velocidade, animação, arma)
Nada de Behavior Tree.
🟢 PASSO 1 — PREPARAR O NPC
Abra o Blueprint do NPC (ex: BP_CowboyNPC).
Variáveis internas do NPC:
Crie essas variáveis (todas simples):
1️⃣ HasWeaponOut
Tipo: Boolean
Default: false
2️⃣ WalkSpeed_Calm
Tipo: Float
Default: 150
3️⃣ WalkSpeed_Alert
Tipo: Float
Default: 220
4️⃣ WalkSpeed_Hostile
Tipo: Float
Default: 300
(Isso evita lógica complicada.)
🟢 PASSO 2 — PEGAR O ESTADO DO MUNDO
No Event Graph do NPC:
Event BeginPlay → Get Game Instance → Cast to GI_WorldState → Promote to Variable (WorldStateRef)
💡 Agora você tem uma referência fixa do mundo.
🟢 PASSO 3 — CRIAR FUNÇÃO "UPDATE REACTION"
Ainda no NPC:
No painel My Blueprint
Clique em + Function
Nome: UpdateReactionToWorld
Abra a função.
🟢 PASSO 4 — REAGIR À TENSÃO DA CIDADE
Dentro da função UpdateReactionToWorld:
WorldStateRef → Get CityTension → Switch on E_CityTension
🤍 CALM Set Max Walk Speed = WalkSpeed_Calm Set HasWeaponOut = false Play Idle Animation
NPC:
Anda devagar
Relaxado
Mãos longe da arma
🟡 SUSPICIOUS Set Max Walk Speed = WalkSpeed_Alert Set HasWeaponOut = false Play Alert Idle
NPC:
Anda mais atento
Olha em volta
Mão perto do coldre
🔴 HOSTILE Set Max Walk Speed = WalkSpeed_Hostile Set HasWeaponOut = true Play Combat Idle
NPC:
Saca arma
Anda rápido
Pronto pra reagir
🟢 PASSO 5 — CHAMAR A FUNÇÃO
Depois do BeginPlay:
Event BeginPlay → (pega WorldStateRef) → Call UpdateReactionToWorld
Agora o NPC reage quando nasce.
🟢 PASSO 6 — ATUALIZAR QUANDO O MUNDO MUDA (SEM TICK)
Agora o truque simples e poderoso.
No GI_WorldState:
Crie um Event Dispatcher:
No GI_WorldState
- Event Dispatcher
Nome: OnWorldStateChanged
Quando qualquer variável mudar:
Depois de Set CityTension, chame:
Call OnWorldStateChanged
No NPC:
Depois do Cast no BeginPlay:
Bind Event to OnWorldStateChanged → Call UpdateReactionToWorld
💥 Agora TODOS os NPCs reagem quando o mundo muda.
🟢 PASSO 7 — EXEMPLO REAL (PLAYER ATIRA)
No Player BP:
On Fire Weapon → Get GI_WorldState → Set CityTension = Hostile → Call OnWorldStateChanged
NPCs:
Sacam armas
Mudam animação
Aumentam velocidade
Mundo reage
dado1234
December 15, 2025, 8:22 am