1
resposta

OnCollisionEnter

Alguém conseguiu inserir esse metodo e fazer funcionar?

Incluir ele no PlayerBehaviour mas não está mostrando o log da colisão com chão!

using UnityEngine;

public class PlayerBehaviour : MonoBehaviour
{
    [SerializeField] private float moveSpeed = 5;

    void OnCollisionEnter(Collision collision)
    {
        Debug.Log("Colidiu com " + collision.gameObject.name);
    }

    private void Start()
    {
        GameManager.instance.inputManager.OnJump += HandleJump;
    }

    private void HandleJump()
    {
        Debug.Log("Estou pulando!");
    }

    private void Update()
    {
        float moveDirection = GameManager.instance.inputManager.Moviment;
        transform.Translate(moveDirection * Time.deltaTime * moveSpeed, 0, 0);
    }
}
1 resposta

Oi John! Tudo bem?

Analisando o trecho de código que você compartilhou não consegui identificar nenhuma inconsistência que pode está causando o erro, por isso, deixarei algumas sugestões de solução que você pode testar no seu ambiente.

  1. Rigidbody: Certifique-se de que o GameObject ao qual o script PlayerBehaviour está anexado tenha um componente Rigidbody. Sem isso, o método OnCollisionEnter não será chamado, pois ele depende das interações físicas que o Rigidbody proporciona.

  2. Collider: Verifique se tanto o objeto do jogador quanto o objeto que representa o chão têm componentes Collider anexados. Ambos os objetos precisam de Colliders para que as colisões sejam detectadas.

  3. Camadas de Colisão: Confira se as camadas (Layers) dos objetos estão configuradas para permitir colisões entre si. Você pode ajustar isso em "Edit > Project Settings > Physics" na matriz de colisão.

Certifique-se de que o Rigidbody não esteja marcado como Kinematic, a menos que você tenha uma razão específica para isso, pois isso também pode afetar a detecção de colisões.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.