Cursos e Bibliotecas Ver Mais

Galeria 3D1 Ver Mais

Vinicius Paciello   São Paulo - AC
rafaelgmarotta   Belo Horizonte / MG - MG
roob88   dourados-ms - MS
Diego Dneo   São Paulo - PR

Portfólios Ver Mais

donato   Rio de Janeiro - RJ
LucasCabriotti   Araçatuba-sp - SP
Matheus   RS - AC

Ajuste Bluerpint First Person Unreal Engine

Por: Leonardo  

Em: 21/02/2024 09:43

O que acontece é que muitos clientes vão rodar o game e movimentam a cabeça para cima e para baixo e depois tem dificuldade de voltar.

Criando um firstPerson que a idéia é que quando para de usar a movimentação de cabeça no eixo "y" ele volte suavemente para a posição "0" do eixo "Y".

Oi Leonardo, tudo bem?
 
É uma idéia interessante, tem que fazer algum tipo de contador de tempo para esperar alguns segundos antes de voltar para a posição, não pode ser o Delay, caso contrário a pessoa não vai conseguir mexer a cabeça ou vai voltar para a posição original quando ela não quiser.
 
Então, se definir por exemplo, que quando o eixo Y for maior do que determinado valor, indicando que a cabeça está para cima, você inicia o contador de tempo.
Dai, quando o contador chegar no limite que estipulou, você checa se o eixo em Y ainda está maior do que o valor determinado, para saber se a pessoa não voltou para a posição normal ainda, se estiver você usa um Lerp (Linear Interpolation) para voltar para a posição original lentamente.
 
O Lerp funciona com um valor de Alpha, ele define a transição entre o valor A e o valor B, quando Alpha é zero sai o valor A, quando Alpha é 1 sai o valor B e quando Alpha está entre zero e 1 sai um valor intermediário entre A e B.
 
O contador você consegue fazer somando um Delta Seconds com uma variável e guardando na própria variável, para poder incrementar ela, então ficaria (Variável + Delta Seconds = Variável), desta forma a variável vai sempre aumentando com o tempo em segundos. 
A cada 1 segundo será somado 1 na variável.

Em teoria essa seria a lógica do recurso, mas só testando para ver se funciona, pois codificação é diferente de modelagem, iluminação, animação e Render, que só pensando a gente tem certeza que vai dar certo.
 
Mas se tiver dúvida em algum ponto deste processo, é só falar que eu explico melhor.
 
OBS: Eu sugiro que faça o seu próprio Character para saber tudo que tem nele e para usar só o que realmente precisa, pois para adaptar o Character da Epic vai ter que estudar bem ele para saber tudo que faz e não dar problema quando editar.
Neste vídeo do Youtube eu ensino a criar o Character de duas formas diferentes: https://www.youtube.com/watch?v=v3hZshP7MAM

Também tem o download do projeto na descrição do vídeo, então, se quiser pode apenas migrar o meu Character para o seu projeto, pois ele só tem os recursos para andar e mover a cabeça. 
 
Abração e tudo de bom.
 
André Vieira
 
Oi Leonardo, tudo bem?

Hoje eu fiz um teste rápido para ver se a minha idéia funcionava e funcionou, tive que colocar uns Booleans para poder ligar e desligar as coisas na hora certa, mas deu certo e a cabeça voltou para a posição normal lentamente.

Eu fiz um Print da imagem do código para você copiar.

No Final do Input que controla o eixo Y (Giro Vertical) eu chamei um Custom Event com o nome Controla Giro Vertical, que checa a inclinação da cabeça e liga o contador.

O resto acontece tudo no Event Tick porque tem que incrementar a todo momento.
A primeira linha do Sequence é o contador.
A segunda checa o tempo limite, que coloquei 3 segundos, quando passa disso ele liga o Lerp.
Na terceira linha ele faz o Lerp interpolando o valor de zero até 1 usando o Delta Seconds no Alpha, mas eu multipliquei pela variável Velocidade para poder controlar a velocidade.
A última linha do Sequence checa se a câmera já está na posição correta, quando chega na posição certa ele desliga o Contador, o Lerp e zera o Tempo para poder fazer de novo da próxima vez.

É bem simplezinho, mas funciona, se quiser pode fazer igual para quando a cabeça estiver virada para o piso, é só inverter os sinais.

Abração e tudo de bom.

André Vieira
Poxa André, obrigadão, vamos ver se consigo fazer tb!
Oi Leonardo, tudo bem?
 
Se tiver qualquer dúvida ou problema nos seus testes, é só falar que eu tento ajudar.
 
Abração e tudo de bom.
 
André Vieira

olá André

fiz uma forma um pouco diferente que me trouxe um resultado, mas ainda não esta 100%

pois ele não pega somente o eixo Y e tambem ele briga com o mouse de vez em quando
 a referencia é a imagem com TIMELINE

de qualquer forma obrigado!

 

 

Oi Leonardo, tudo bem?
 
No meu teste eu não usei o Spring Arm, porque vai ser mais difícil controlar ele em vez de apenas a câmera, além de tudo ele funciona como uma mola, então, mesmo que acesse os controles dele para voltar para a posição normal, acho que vai dar uma balançada a mais que não deveria.
 
Se fizer o seu Character, que é facinho, só precisa colocar os Inputs, não vai ter erro, porque dai é só copiar o código que postei na mensagem anterior.
 
Faz um Character zerado ai, pede para criar um Blueprint e escolher a opção Character.
Imagino que já tem as teclas configuradas ou pode usar as mesmas do First Person.
Dai é só digitar o nome das teclas para elas parecerem como Inputs e fazer o código que mostro na imagem em anexo.
 
As teclas são os Nodes vermelhos, então, estão com os meus nomes como FrenteTras, DireitaEsquerda, GiroVertical e GiroHorizontal, no seu caso tem que digitar os nomes das suas teclas, é só essa a diferença.

Sobre usar a Timeline, é uma opção bem mais pesada do que usar o Delta Seconds, que é "de graça" no processamento, mas o resultado dá na mesma neste ponto.
Entretanto, sem um contador vai ter este problema que falou de brigar com o mouse.
Faz o seu Character e copia o meu código que vai dar certo e ficará perfeito! 

Abração e tudo de bom.
 
André Vieira

Faça o login para poder comentar

Usuários conectados

Total de mensagens publicadas pelos membros da comunidade: 707734.

Total de membros registrados: 135328

Últimos membros registrados: Blacklord55, Brinkmantyson, Baruto026, Monizze.o, lhsousac95, [email protected], vsanbrva, pmmng.

Usuário(s) on-line na última hora: 492, sendo 17 membro(s) e 475 visitante(s).

Membro(s) on-line na última hora: Thiago Couto, Carla Franco, xamusquinha, Moura, Reinaldo Silva, Le_Andro, cadwillem, Lucas Reis, Ronaldo Junior, Willmitnick, Pedro Juliato, Hot, Nuno, Ricardo Paranhos, Elis, Fernando Cunha, Marco Rocha.

Legenda: Administrador, Especial, Moderador, Parceiro .

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