Problemas com a física no inicio do projeto

No meu jogo que estou criando, não estou conseguindo que o personagem mova os objetos(cubos na cena) de acordo com a movimentação do personagem. Aqui segue o print:

1 curtida

Eu não entendi, mas se for pro player encostar e mover o cubo é só adicionar um rigidbody

É pro player encostar e mover os cubos, porém os cubos não são afetados pelo movimento do jogador, e sim, os cubos já estão com rigidbody, inclusive adicionei mais um só pra mostrar o erro:

2 curtidas

Ja tentou aumentar a massa do personagem? no rigidbody

1 curtida

Eu coloquei rigidbody no personagem e coloquei a massa com valor de 50 mas mesmo assim não funcionou. Estou usando o characterController.

2 curtidas

Ah então ta explicado, o character controller não adiciona física que nem o rigidbody, tem que ser por script

2 curtidas

Então tenho que fazer mudanças no script de movimento do jogador? Tal como adicionar a massa?

2 curtidas

Complementando minha resposta anterior, pelo que eu saiba, usar um rigidbody e um character controller no mesmo objeto pode gerar conflito, se for usar o character controller tem que ser por script

2 curtidas

Mas ai o método pra tratar colisões não é o “OncollisionEnter”, é “void OnControllerColliderHit(ControllerColliderHit hit)”

1 curtida

Certo, mas como faço para que meu personagem afete outros objetos da cena usando o método OnControllerColliderHit(ControllerCollider hit) ?

2 curtidas

public float pushForce = 5f; // A força com que o cubo será empurrado

private void OnControllerColliderHit(ControllerColliderHit hit)
{
    // Obtém o Rigidbody do objeto com o qual o personagem colidiu
    Rigidbody rb = hit.collider.attachedRigidbody;

    // Se o objeto não tem Rigidbody ou se está em modo Kinematic, não fazemos nada
    if (rb == null || rb.isKinematic)
        return;

    // Obtém a direção da colisão (a direção que o personagem colidiu com o cubo)
    Vector3 pushDirection = hit.normal; // A direção da colisão (normal)

    // Aplica uma força no cubo na direção oposta à colisão
    // O "pushForce" é multiplicado pela normal da colisão para empurrar o cubo para longe do personagem
    rb.AddForce(-pushDirection * pushForce, ForceMode.Impulse);
}
2 curtidas

Peguei esse código do chat gpt, não tenho como testar agora, mas não é muito difícil de entender

2 curtidas

Mesmo assim tudo bem. Vou testar e retorno aqui para mostrar o resultado.

2 curtidas

Retirei o a sobrecarga pushForce e funcionou mais realista, pois o pushForce estava adicionando uma força anormal a colisão
Edit: aumentei também a massa dos demais objetos e está funcionando como eu queria, valeu!

2 curtidas