material

TEXTURA QUE SE MOVIMENTA

  • Exposure: public
  • UE Version: 5.6

dado1234

July 21, 2025, 8:05 am

Click the button above, it will automatically copy blueprint in your clipboard. Then in Unreal Engine blueprint editor, paste it with ctrl + v

1 comment

  • dado1234

    December 15, 2025, 8:22 am

    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