BluePrint para movimento de personagem unreal

Por: lzanlorenzi11  

Em: 25/11/2025 20:43

Olá amigos.. preciso de ajuda com um blueprint pra movimentar um personagem de um ponto para outro quando clico em um botao no level. alguem poderia me ajudar ou fazer uma mentoria?
Grande abraço!
Oi lzanlorenzi11, tudo bem?
 
Não é uma pergunta muito simples, pois envolve Animation Blueprint, Skeletal Mesh, Actor Blueprint e Spline Component, então fica difícil explicar em detalhes aqui com textos e imagens.
 
Se você for aluno do curso de Unreal, eu explico em detalhes como fazer isso nos vídeos 8 e 9 do capítulo 12.
Porém, eu ensino a animar um objeto pela Spline e para animar uma pessoa depende ainda do Animation Blueprint como comentei, mas eu expliquei como transformar esse Blueprint de objeto para animar pessoas no vídeo 2 do capítulo 18.
 
Se você não for aluno do curso e tiver alguma base em Blueprint, eu posso ir te ajudando a fazer aos poucos com mensagens aqui no fórum, pois precisará de várias.
Se você não tiver nenhuma base em Blueprint vai ser muito difícil ensinar tudo aqui.
 
A primeira coisa a fazer é configurar um Animation Blueprint com o Skeletal Mesh da pessoa andando no mesmo ponto sem sair do lugar, ou seja, sem Root Motion.
 
OBS: Se a pessoa vai iniciar parada e depois andar ou vai parar no final e ficar fazendo apenas pequenos movimentos no mesmo lugar, precisa configurar um Blend Space para poder controlar essa transição.
 
Depois, você precisa criar um Actor Blueprint, adicionar o Skeletal Mesh com o Animation Blueprint, criar um Spline Component e calcular a posição de um ponto no início da linha, assim, se evoluir essa posição ao longo do tempo, vai mover a pessoa pelo caminho da linha.
 
O cálculo dessa posição é feito com o Get Location At Distance Along Spline ligado no Location do Make Transform, o resultado disso deve ser conectado no Set World Transform do Skeletal Mesh para mover ele pela linha.
 
O Get Location At Distance Along Spline pede o valor da distância como um Scalar, então, você precisa pegar o Get Spline Lenght para saber o tamanho da Spline e multiplicar por uma variável Float, assim, quando a variável for 0 vai estar no início da linha e quando a variável for 1 estará no final da linha.
 
Portanto, se você conectar o resultado dessa multiplicação no Distance do Get Location At Distance Along Spline e evoluir o valor da variável Float de 0 até 1, a animação vai acontecer.
 
Você pode evoluir a variável de diversas formas diferentes, a mais fácil e prática é com o Node Timeline, apesar de não ser o mais leve e o mais eficiente.
 
No caso de usar o Timeline, é só criar uma curva nele de 0 até 1 com duração de 1 segundo ou o quanto quiser, é bom que seja valores cheios como 10, 100 e tal.
 
No final você dá Play nessa Timeline com algum Custom Event ou no Beging Play e conecta o resultado dela na variável Float que multiplicou pelo Spline Lenght para a animação acontecer.
 
A imagem em anexo mostra o cálculo da posição do ponto na Spline.
 
Note que eu somei a altura em Z antes de conectar no Location do Make Transform para poder controlar a altura e não deixar os pés entrar no chão.
 
OBS: Veja que além do Location eu também usei o Get Rotation At Distance Along Spline para fazer a pessoa ou objeto acompanhar as curvas da linha, caso contrário, ele ficará sempre na mesma direção.
Basta conectar o resultado dele no Rotation do Make Transform, mas eu usei o Combine Rotators junto com uma variável de rotação para poder controlar a direção da forma que desejar.
 
Se tiver qualquer dúvida é só falar que eu explico melhor o ponto.
 
OBS2: Essa é a melhor forma de fazer porque pode desenhar o caminho como quiser, porém, dá para fazer mais fácil sem a Spline se quiser apenas mover em linha reta entre dois pontos, dai é só subtrair o vetor inicial do final para ter a distância e a direção, depois, usar o FInterp To para interpolar o deslocamento entre os dois, além do RInterp To se quiser também controlar a rotação. 
 
Abração e tudo de bom.
 
André Vieira

Faça o login para poder comentar

Informações da Comunidade

Total de mensagens publicadas pelos membros da comunidade: 717047.

Total de membros registrados: 143032

Últimos membros registrados: LeslieCMerriman, KeepsTRT335, CHERIF, SaraaahC, AiraBreeze3445, AiraBreeze35, Kenirous99, jcastilhos.

Usuário(s) on-line na última hora: 553

Legenda: Administrador, Especial, Moderador, Parceiro .

3D1 © Três D1 © 1999-2026. Todos direitos reservados.