[RESOLVIDO] Rigidbody2D.AddForce esta teleportando o objeto
2 participantes
Página 1 de 1
[RESOLVIDO] Rigidbody2D.AddForce esta teleportando o objeto
Boa tarde
Estou progamando um sistema de WallJump no qual o boneco desliza verticalmente na parede(tipo: celeste, katana zero, speedrunners, e assim podendo pula de uma pra outra, meu objetivo é criar um sistema que quando o jogador apertar a tecla Espaço uma força na diagonal pro lado oposto da parede que ele está será adicionada ao seu rigidbody, o impulso vertical está funcionando perfeitamente, porém o horizontal ao invés de acontecer um impulso suave ele teleporta o personagem, a principio achei q estava movendo tão rápido que não da pra ver, fui testar e botei o jogo em camera lenta, aí deu pra ver claramente que estava teleportando.
Alguém sabe como resolver isso? comecei a pouco tempo.
O codigo que postei esta no FixedUptade.
if (isWallSliding)
{
if (rb.velocity.y < -wallSlideSpeed)
{
rb.velocity = new Vector2(rb.velocity.x, -wallSlideSpeed);
}
if (Input.GetKey("space"))
{
Vector2 force = new Vector2(wallJumpForce * wallJumpDirection.x * -1 * Time.deltaTime, wallJumpForce * wallJumpDirection.y);
rb.velocity = Vector2.zero;
rb.AddForce(force, ForceMode2D.Impulse);
}
}
Estou progamando um sistema de WallJump no qual o boneco desliza verticalmente na parede(tipo: celeste, katana zero, speedrunners, e assim podendo pula de uma pra outra, meu objetivo é criar um sistema que quando o jogador apertar a tecla Espaço uma força na diagonal pro lado oposto da parede que ele está será adicionada ao seu rigidbody, o impulso vertical está funcionando perfeitamente, porém o horizontal ao invés de acontecer um impulso suave ele teleporta o personagem, a principio achei q estava movendo tão rápido que não da pra ver, fui testar e botei o jogo em camera lenta, aí deu pra ver claramente que estava teleportando.
Alguém sabe como resolver isso? comecei a pouco tempo.
O codigo que postei esta no FixedUptade.
if (isWallSliding)
{
if (rb.velocity.y < -wallSlideSpeed)
{
rb.velocity = new Vector2(rb.velocity.x, -wallSlideSpeed);
}
if (Input.GetKey("space"))
{
Vector2 force = new Vector2(wallJumpForce * wallJumpDirection.x * -1 * Time.deltaTime, wallJumpForce * wallJumpDirection.y);
rb.velocity = Vector2.zero;
rb.AddForce(force, ForceMode2D.Impulse);
}
}
titan27- Iniciante
- PONTOS : 1471
REPUTAÇÃO : 5
Idade : 23
Áreas de atuação : Iniciante na Unity
Iniciante no Blender
Respeito as regras :
Re: [RESOLVIDO] Rigidbody2D.AddForce esta teleportando o objeto
Acho que encontrei o problema.
está bem nessa parte, tu está multiplicando o seu x por Time.deltaTime, mas não esta multiplicando o seu Y.
como tu ta usando esse Vector2 em um Addforce tu não precisa multiplicar por Time.deltaTime
ou seja só tira esse:
e deve funcionar perfeitamente.
- Código:
Vector2 force = new Vector2(wallJumpForce * wallJumpDirection.x * -1 * Time.deltaTime, wallJumpForce * wallJumpDirection.y);
está bem nessa parte, tu está multiplicando o seu x por Time.deltaTime, mas não esta multiplicando o seu Y.
como tu ta usando esse Vector2 em um Addforce tu não precisa multiplicar por Time.deltaTime
ou seja só tira esse:
- Código:
* Time.deltaTime
e deve funcionar perfeitamente.
Re: [RESOLVIDO] Rigidbody2D.AddForce esta teleportando o objeto
dutrabr100 escreveu:
Opa, valeu mesmo cara, vou testar
titan27- Iniciante
- PONTOS : 1471
REPUTAÇÃO : 5
Idade : 23
Áreas de atuação : Iniciante na Unity
Iniciante no Blender
Respeito as regras :
Re: [RESOLVIDO] Rigidbody2D.AddForce esta teleportando o objeto
Opa amigo estou aqui de volta, testei, fiz de diversas maneiras diferentes porém sempre a mesma coisa, vc poderia me dizer como você faria, caso fosse utilizar isso em algum projeto?
titan27- Iniciante
- PONTOS : 1471
REPUTAÇÃO : 5
Idade : 23
Áreas de atuação : Iniciante na Unity
Iniciante no Blender
Respeito as regras :
Re: [RESOLVIDO] Rigidbody2D.AddForce esta teleportando o objeto
titan27 escreveu:Opa amigo estou aqui de volta, testei, fiz de diversas maneiras diferentes porém sempre a mesma coisa, vc poderia me dizer como você faria, caso fosse utilizar isso em algum projeto? Digo adicionar força para a direita ou esquerda.
titan27- Iniciante
- PONTOS : 1471
REPUTAÇÃO : 5
Idade : 23
Áreas de atuação : Iniciante na Unity
Iniciante no Blender
Respeito as regras :
Re: [RESOLVIDO] Rigidbody2D.AddForce esta teleportando o objeto
deixa mn consegui resolver, acho que era um reset de velocidade ja que o jogador podia se mexer enquanto recebia a forca, ai isso deveria estar causando algum choque de forcas ao mesmo tempo, algo assim/
titan27- Iniciante
- PONTOS : 1471
REPUTAÇÃO : 5
Idade : 23
Áreas de atuação : Iniciante na Unity
Iniciante no Blender
Respeito as regras :
Tópicos semelhantes
» Rigidbody2D AddForce - Como adicionar uma força oneshot.
» Quando o objeto esta sendo gerado ele esta rotacionando
» Como saber em qual objeto um objeto esta filiado?
» [RESOLVIDO] Como saber se o jogador esta vendo um certo objeto?
» [RESOLVIDO] Como verificar qual objeto de uma array está mais perto.
» Quando o objeto esta sendo gerado ele esta rotacionando
» Como saber em qual objeto um objeto esta filiado?
» [RESOLVIDO] Como saber se o jogador esta vendo um certo objeto?
» [RESOLVIDO] Como verificar qual objeto de uma array está mais perto.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos