OnCollisionEnter() 在 rigid-body 和弹跳时连续检测不工作..?

OnCollisionEnter() not functioning with rigid-body and continuous detection while bouncing..?

所以,正如标题所暗示的,我的 OnCollisionEnter 没有被调用。我不确定为什么。 objects 从它们接触的表面弹回。

相关代码如下:

static Rigidbody m_ProjectileRigidbody;
internal void FireProjectile(GameObject projectile, float speed)
{
    projectile.transform.position =
        State.PlayerTransform.position + State.PlayerTransform.forward;
    projectile.transform.rotation = State.PlayerTransform.rotation;

    m_ProjectileRigidbody = projectile.GetComponent<Rigidbody>();
    m_ProjectileRigidbody.AddForce
        (State.PlayerTransform.forward * speed, ForceMode.Impulse);

    if (State.PlayerState.Consumes)
    {
        State.PlayerState.ConsumeCellEnergy(EnergyConsumption);
        State.PlayerState.GenerateCellHeat(HeatProduction);
    }
}

void OnCollisionEnter(Collision collision)
{
    Debug.Log("Collided With: " + collision.gameObject.name);
}

如果您使用 2D collidersrigidbodies,请使用 OnCollisionEnter2D 而不是 OnCollisionEnter

并确保在 Edit -> Project Settings -> Physics 中正确设置了碰撞矩阵。

另外,仔细检查:

  1. 两个对象都已正确设置 colliderrigidbody
  2. 两个对象都处于活动状态。
  3. 您没有不小心禁用 colliderrigidbody 或设置 isKinematicisTrigger 来自您的脚本。