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 colliders
和 rigidbodies
,请使用 OnCollisionEnter2D
而不是 OnCollisionEnter
。
并确保在 Edit -> Project Settings -> Physics
中正确设置了碰撞矩阵。
另外,仔细检查:
- 两个对象都已正确设置
collider
、rigidbody
。
- 两个对象都处于活动状态。
- 您没有不小心禁用
collider
、rigidbody
或设置
isKinematic
、isTrigger
来自您的脚本。
所以,正如标题所暗示的,我的 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 colliders
和 rigidbodies
,请使用 OnCollisionEnter2D
而不是 OnCollisionEnter
。
并确保在 Edit -> Project Settings -> Physics
中正确设置了碰撞矩阵。
另外,仔细检查:
- 两个对象都已正确设置
collider
、rigidbody
。 - 两个对象都处于活动状态。
- 您没有不小心禁用
collider
、rigidbody
或设置isKinematic
、isTrigger
来自您的脚本。