Problema na rotação da Bicicleta
2 participantes
Página 1 de 1
Problema na rotação da Bicicleta
Estou com um problema na rotação da minha bicicleta, é o seguinte no começo tudo acontece normal como segue a imagem.

a rotação no começo.

e esse é o rigidbody, que como podem ver eu travei a rotação em Z.
porem mesmo com a rotacao travada , conforme a bicicleta vai fazendo curva ela vai deitando em Z.

e a rotacao em z vai mudando

Como estou usando WheelCollider esse comportamento na curva é esperado , porem conforme ela sai da curva a sua rotação em Z não é completamente ajustada e permanece deitada.

Tentei ajusta via script o angulo no eixo Z porem não obtive sucesso, acredito que tenha a ver com centro de massa ou a velocidade angular do rigidbody , mas essas coisas não parece ser tão simples de se manipular.
Alguem tem uma sugestão , dica pra isso ? só quero que o eixo de rotação Z se aproxime de 0 quando sair da curva.

a rotação no começo.

e esse é o rigidbody, que como podem ver eu travei a rotação em Z.

porem mesmo com a rotacao travada , conforme a bicicleta vai fazendo curva ela vai deitando em Z.

e a rotacao em z vai mudando

Como estou usando WheelCollider esse comportamento na curva é esperado , porem conforme ela sai da curva a sua rotação em Z não é completamente ajustada e permanece deitada.

Tentei ajusta via script o angulo no eixo Z porem não obtive sucesso, acredito que tenha a ver com centro de massa ou a velocidade angular do rigidbody , mas essas coisas não parece ser tão simples de se manipular.
Alguem tem uma sugestão , dica pra isso ? só quero que o eixo de rotação Z se aproxime de 0 quando sair da curva.
leleo- Iniciante
- PONTOS : 1824
REPUTAÇÃO : 4
Respeito as regras :
Re: Problema na rotação da Bicicleta
Eu já fiz uma física de moto seguindo essa mesma lógica que você tá usando, inclusive também encontrei esse problema.
A solução foi separar completamente a física do visual, pra física, uso um objeto com colisor, Rigidbody e as wheelCollider, o rigidbody dele só permite girar em Y e X, não mexo via script no Z;
O visual é só a mesh da moto que fica alinhada com física em Y e X, mas se inclina em Z conforme a velocidade/direção da curva, isso permite até simular o comportamento de contra esterço que é quando em alta velocidade, você vira o guidão no sentido oposto a curva pra ir pra direção que você quer. Não é fisicamente correto, mas fica bom o suficiente, segue um vídeo pra você ver a diferença do movimento da física pro visual da moto:
a lógica pra equilibrar o objeto como se fosse no mundo real é muito complicada, e só forçar via script o rigidbody pra lockar em Z não funciona como você mesmo viu.
A solução foi separar completamente a física do visual, pra física, uso um objeto com colisor, Rigidbody e as wheelCollider, o rigidbody dele só permite girar em Y e X, não mexo via script no Z;
O visual é só a mesh da moto que fica alinhada com física em Y e X, mas se inclina em Z conforme a velocidade/direção da curva, isso permite até simular o comportamento de contra esterço que é quando em alta velocidade, você vira o guidão no sentido oposto a curva pra ir pra direção que você quer. Não é fisicamente correto, mas fica bom o suficiente, segue um vídeo pra você ver a diferença do movimento da física pro visual da moto:
a lógica pra equilibrar o objeto como se fosse no mundo real é muito complicada, e só forçar via script o rigidbody pra lockar em Z não funciona como você mesmo viu.
Fagner- Moderador
-
PONTOS : 3907
REPUTAÇÃO : 665
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: Problema na rotação da Bicicleta
Você apenas deu Freeze no eixo Z no rigidbody do objeto que possui as wheelcollider? porque fiz isso é mesmo assim ele rotaciona no eixo Z.Fagner escreveu:Eu já fiz uma física de moto seguindo essa mesma lógica que você tá usando, inclusive também encontrei esse problema.
A solução foi separar completamente a física do visual, pra física, uso um objeto com colisor, Rigidbody e as wheelCollider, o rigidbody dele só permite girar em Y e X, não mexo via script no Z;
O visual é só a mesh da moto que fica alinhada com física em Y e X, mas se inclina em Z conforme a velocidade/direção da curva, isso permite até simular o comportamento de contra esterço que é quando em alta velocidade, você vira o guidão no sentido oposto a curva pra ir pra direção que você quer. Não é fisicamente correto, mas fica bom o suficiente, segue um vídeo pra você ver a diferença do movimento da física pro visual da moto:
a lógica pra equilibrar o objeto como se fosse no mundo real é muito complicada, e só forçar via script o rigidbody pra lockar em Z não funciona como você mesmo viu.
Não entendi muito bem como fazer para visual ter o mesmo alinhamento do objeto com rigidbody em Y e X e ainda sim se rotacionar independente em Z.
( ta muito maneiro a física da moto é o que estou tentando fazer , Parabéns)
leleo- Iniciante
- PONTOS : 1824
REPUTAÇÃO : 4
Respeito as regras :
Re: Problema na rotação da Bicicleta
Sim, apenas usei o Freeze no Z, o resto fica desbloqueado.
Sobre a questão do alinhamento, toda a hierarquia da moto é bem similar a real, o chassi é o pai de todos, o guidão é filho do chassi, o amortecedor é filho do guidão, a roda filha do amortecedor.
O chassi é filho do objeto com Rigidbody, dessa forma ele segue o movimento da física e tudo acompanha junto, a única coisa que precisei ajustar foi a suspensão, basta pegar a posição do hit da wheelCollider, medir a distancia em relação a um ponto fixo e usar isso pra mover o localposition do amortecedor. Ex: o amortecedor dianteiro recebe a distancia entre o hit da wheel Collider dianteira e a origem do guidão, menos um certo valor x pra deixá-lo onde quero.
A origem do chassi eu deixei perto do chão, dessa forma consigo girar o localPosition do chassi e dando a sensação que está girando apoiado nas rodas.
A inclinação é só a direção do Input.GetAxis() multiplicado por um valor pra cada velocidade, o ângulo do guidão segue a mesma lógica.
O giro das rodas é um código bem similar ao que postei no outro dia;
Sobre a questão do alinhamento, toda a hierarquia da moto é bem similar a real, o chassi é o pai de todos, o guidão é filho do chassi, o amortecedor é filho do guidão, a roda filha do amortecedor.
O chassi é filho do objeto com Rigidbody, dessa forma ele segue o movimento da física e tudo acompanha junto, a única coisa que precisei ajustar foi a suspensão, basta pegar a posição do hit da wheelCollider, medir a distancia em relação a um ponto fixo e usar isso pra mover o localposition do amortecedor. Ex: o amortecedor dianteiro recebe a distancia entre o hit da wheel Collider dianteira e a origem do guidão, menos um certo valor x pra deixá-lo onde quero.
A origem do chassi eu deixei perto do chão, dessa forma consigo girar o localPosition do chassi e dando a sensação que está girando apoiado nas rodas.
A inclinação é só a direção do Input.GetAxis() multiplicado por um valor pra cada velocidade, o ângulo do guidão segue a mesma lógica.
O giro das rodas é um código bem similar ao que postei no outro dia;
Fagner- Moderador
-
PONTOS : 3907
REPUTAÇÃO : 665
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :

» Rotação
» Problema na rotaçao do objeto
» Rotação
» Alguem pode me ajudar com rotação "rigidbody" mouse X e Y e rotação em Z com as teclas Q . E tudo ajustavel!! em C#
» [AJUDA] rotação
» Problema na rotaçao do objeto
» Rotação
» Alguem pode me ajudar com rotação "rigidbody" mouse X e Y e rotação em Z com as teclas Q . E tudo ajustavel!! em C#
» [AJUDA] rotação
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos