在刚体之间访问法线 force/impulse
Acess normal force/impulse between rigid bodies
我正在 Unity 3d 中制作弹射器游戏。当我的弹射器的石头击中敌方城堡的墙壁时,或者当敌方城堡的塔楼一起倒塌时,我将需要刚体之间的力来计算伤害。相对速度是不够的,因为它没有考虑质量。将相对速度和质量相乘也无济于事,因为我需要知道接触点相对于物体质心的位置,以及它们的转动惯量。石头可能直接撞到墙上,也可能被反射。这个脉冲值一定存在于物理引擎的某个地方,因为它被用于物理引擎,但我找不到它。
我想要的示例代码:
void OnCollisionEnter(Collider other){
float force = other.relativeForce;
if (force > breakLimit){
Destroy(gameObject);
Instantiate(Debri, transform.position, transform.rotation);
}
}
您可能需要了解一些物理方程或原理:
IE。
1/2 mv^2
你石头的动能。
为简单起见:
<Kinetic energy before collision> = <Kinetic energy after collision> + energy accepted by the wall.
希望对你有所帮助
我正在 Unity 3d 中制作弹射器游戏。当我的弹射器的石头击中敌方城堡的墙壁时,或者当敌方城堡的塔楼一起倒塌时,我将需要刚体之间的力来计算伤害。相对速度是不够的,因为它没有考虑质量。将相对速度和质量相乘也无济于事,因为我需要知道接触点相对于物体质心的位置,以及它们的转动惯量。石头可能直接撞到墙上,也可能被反射。这个脉冲值一定存在于物理引擎的某个地方,因为它被用于物理引擎,但我找不到它。
我想要的示例代码:
void OnCollisionEnter(Collider other){
float force = other.relativeForce;
if (force > breakLimit){
Destroy(gameObject);
Instantiate(Debri, transform.position, transform.rotation);
}
}
您可能需要了解一些物理方程或原理: IE。 1/2 mv^2 你石头的动能。
为简单起见:
<Kinetic energy before collision> = <Kinetic energy after collision> + energy accepted by the wall.
希望对你有所帮助