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));
}
}