Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Repulsão do RigidBody funcionando mal. Como posso consertar?

Eu estou parado no final do módulo 2 pois a colisão não está funcionando como deveria. O personagem está se movimentando pelo rigidbody, mas quando colide com um objeto que possui collider o rigidbody faz ele atravessar o objeto, porém, se eu soltar a tecla sem que o personagem atravesse-o completamente, o boneco é "repulsado" para fora rapidamente. Resumindo, se apertar o botão para andar em direção a um prédio, o personagem entra um pouco e é lançado de volta para a sua posição, todavia, se eu segurar, ele atravessa o objeto. Portanto, acho que o RigidBody está detectando a colisão, mas a "força de entrar" é maior que a de repulsão. Eu gostaria de fazer o personagem colidir e ficar parado, sem atravessar. Poderiam me ajudar? Eu estou tentando consertar, mas sem sucesso. Aqui está o código do ControlaJogador e algumas imagens da Unity :

using UnityEngine;

public class ControlaJogador : MonoBehaviour
{

public float velocidade = 10;
Vector3 direcao;

// Update is called once per frame
void Update()
{

    float eixoX = Input.GetAxis("Horizontal");
    float eixoZ = Input.GetAxis("Vertical");

    direcao = new Vector3(eixoX, 0, eixoZ);

    if (direcao != Vector3.zero)
    {
        GetComponent<Animator>().SetBool("Movendo", true);
    }
    else
    {
        GetComponent<Animator>().SetBool("Movendo", false);
    }


}

private void FixedUpdate()
{
    GetComponent<Rigidbody>().MovePosition(GetComponent<Rigidbody>().position + (direcao * velocidade * Time.deltaTime));
}
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

Oi, Caio, tudo bem?

Esse tópico tem várias dicas de como corrigir isso as primeiras de aumentar os drags devem funcionar no seu caso.

Bons estudos e qualquer coisa estou por aqui!

Aumentar a Max Depenetration para 1000 solucionou o problema. Obrigado.