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:
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:
Ja tentou aumentar a massa do personagem? no rigidbody
Eu coloquei rigidbody no personagem e coloquei a massa com valor de 50 mas mesmo assim não funcionou. Estou usando o characterController.
Ah então ta explicado, o character controller não adiciona física que nem o rigidbody, tem que ser por script
Então tenho que fazer mudanças no script de movimento do jogador? Tal como adicionar a massa?
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
Mas ai o método pra tratar colisões não é o “OncollisionEnter”, é “void OnControllerColliderHit(ControllerColliderHit hit)”
Certo, mas como faço para que meu personagem afete outros objetos da cena usando o método OnControllerColliderHit(ControllerCollider hit) ?
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);
}
Peguei esse código do chat gpt, não tenho como testar agora, mas não é muito difícil de entender
Mesmo assim tudo bem. Vou testar e retorno aqui para mostrar o resultado.
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!