Wall Climb e Wall Slide Avançado para Roblox
Gere um sistema de movimentação vertical responsivo para Roblox, permitindo que jogadores deslizem ao encostar em paredes no ar e escalem superfícies válidas enquanto atendem aos requisitos de input, stamina e direção. O resultado é pensado para jogos de obby, parkour, combate, aventura e experiências com movimentação avançada.
O prompt exige uma análise prévia do contexto do seu Explorer, incluindo nomes de RemoteEvents, animações, atributos, configurações e hierarquia já existente. Assim, o código retornado é adaptado ao seu projeto em vez de depender de nomes genéricos ou objetos inexistentes.
Além da implementação em Luau comentado, o modelo deverá entregar instruções de instalação, configuração e testes no Roblox Studio. O sistema prioriza raycasts robustos, limpeza de conexões, compatibilidade com respawn e boas práticas de segurança para qualquer comunicação cliente-servidor relacionada a stamina, progressão ou validação de movimentação.
Atue como um desenvolvedor Roblox sênior, especialista em Luau, sistemas de movimento, raycasting, Humanoid e arquitetura cliente-servidor segura. Desenvolva um sistema avançado de Wall Slide e Wall Climb adaptado ao contexto do meu jogo, que fornecerei abaixo antes da geração do código. Antes de programar, leia e considere integralmente o contexto que vou colar. Ele pode incluir nomes exatos de objetos no Explorer, estrutura de pastas, RemoteEvents/RemoteFunctions existentes, ModuleScripts, sistema de stamina, atributos do Character, IDs de animação, mapeamento de teclas, regras de gameplay e versões já existentes do movimento. Não invente objetos, remotes, módulos ou caminhos que não existam no contexto. Se faltar uma informação indispensável, faça no máximo 5 perguntas objetivas antes de gerar o código. Se a informação não for indispensável, assuma uma configuração razoável, declare a suposição e concentre todas as constantes configuráveis no início do script. CONTEXTO DO MEU JOGO (vou preencher): - Hierarquia relevante do Explorer: - Tipo e nome dos scripts/remotes já existentes: - RemoteEvents/RemoteFunctions disponíveis e seus contratos: - Sistema de stamina, atributos e valores existentes: - IDs ou objetos Animation disponíveis: - Teclas desejadas para escalar/deslizar: - Regras especiais, superfícies proibidas e exceções: - Outras informações: O resultado principal deve ser UM LocalScript Luau completo, pronto para colar em StarterPlayer > StarterCharacterScripts. Explique claramente que ele deve ser instalado nesse local para ser recriado a cada respawn. Use apenas APIs Roblox atuais e Luau válido. Não use sintaxe depreciada, waits arbitrários, loops infinitos sem controle, nem dependências externas. Caso o contexto determine que a arquitetura exige ModuleScript ou Script servidor adicional, entregue-os apenas como componentes complementares claramente separados, mas mantenha o LocalScript principal funcional e explique a localização exata de cada arquivo. Implemente os seguintes comportamentos: 1. Wall Slide: quando o personagem estiver no ar, próximo de uma parede vertical válida e em queda, reduza a velocidade vertical de descida até um limite configurável. O sistema deve parar imediatamente ao tocar o chão, perder a parede, morrer, sentar, nadar, entrar em estado incompatível ou não atender às condições definidas. 2. Wall Climb: enquanto o personagem estiver detectando uma parede válida e o jogador mantiver a tecla configurada, permita deslocamento vertical ascendente controlado. Inclua velocidade máxima, duração máxima ou consumo de stamina opcional, e bloqueie a escalada se não houver recurso suficiente. 3. Detecção robusta: use Workspace:Raycast com RaycastParams configurado para ignorar o próprio Character e aplicar, quando informado no contexto, filtros por CollisionGroup, tags CollectionService, atributos ou nomes de partes. Valide que a superfície seja majoritariamente vertical usando a normal retornada pelo raycast, impedindo escalada em chão, teto e inclinações fora do limite configurado. 4. Estado e transições: controle explicitamente estados como Idle, WallSliding, WallClimbing e Cooldown. Evite sobreposição com pulo, queda normal, natação, ragdoll, ferramentas ou outros estados indicados no contexto. Faça cleanup seguro de RBXScriptConnections, animações, forças e referências quando o Character for removido ou o Humanoid morrer. 5. Movimento físico estável: prefira mecanismos modernos e estáveis compatíveis com o Humanoid, evitando alterar CFrame de forma agressiva a cada frame. Se usar LinearVelocity, VectorForce, AlignOrientation ou AssemblyLinearVelocity, justifique brevemente a escolha nos comentários e garanta remoção/restauração segura. Preserve o comportamento normal do personagem fora da parede. 6. Feedback opcional: suporte animações de slide e climb, sons e partículas somente se eles existirem no contexto. Não gere IDs fictícios. Caso estejam ausentes, deixe campos de configuração comentados para o usuário preencher. 7. Qualidade: use RunService de forma apropriada, dt quando necessário, nomes claros, tipagem Luau onde agregar valor, comentários úteis em português e uma seção CONFIG centralizada com todas as variáveis ajustáveis: distância do raycast, velocidade de slide, velocidade de climb, cooldown, stamina e ângulo máximo da parede. SEGURANÇA OBRIGATÓRIA: wall slide e feedback visual podem ser locais, mas o cliente nunca deve ser autoridade para dano, moedas, inventário, stamina persistente, checkpoints, recompensas ou teleporte. Se o meu contexto possuir RemoteEvent/RemoteFunction para stamina, progressão ou validação de mobilidade, integre-o com contrato explícito e trate toda resposta do servidor como autoritativa. Todo input enviado pelo cliente deve ser mínimo e o script complementar de servidor, se necessário, deve validar jogador, Character, Humanoid, estado, distância, parede, rate limit e valores numéricos antes de aceitar qualquer ação. Nunca confie em dados do cliente para conceder vantagens permanentes. Formato obrigatório da resposta: primeiro, apresente uma lista curta de pressupostos e a árvore de instalação no Explorer. Em seguida, entregue o código completo dentro de um único bloco markdown com a linguagem ```lua. Não omita trechos usando frases como “restante do código”, “adicione sua lógica” ou pseudocódigo. Após o código, explique como configurar os campos da seção CONFIG e forneça um roteiro prático de testes no Roblox Studio para respawn, parede válida, parede inclinada, chão/teto, stamina esgotada, cooldown, morte, multiplayer com Start Server e possíveis conflitos com scripts de movimento existentes.