我在unity3d制作汽车游戏,我有城市,汽车,路灯等。我想让它可以破坏,就像在GTA中一样。现在它的工作应该是这样,但问题在于某些物体的阻力,例如交通信号灯或灯具,混凝土的物体。
这是我的剧本,非常简单,低速工作(<60-70kmh):
private void OnCollisionEnter(Collision collision)
{
PlayerSpeed = gameObject.GetComponent<Rigidbody>().velocity.magnitude * 3.6f;
PlayerMass = gameObject.GetComponent<Rigidbody>().mass;
PlayerKineticEnergy = (PlayerMass * PlayerSpeed * PlayerSpeed) / 2;
if (PlayerKineticEnergy > 900000.0f)
{
collision.gameObject.GetComponent<Rigidbody>().constraints = RigidbodyConstraints.None;
StreetBehaviour = collision.gameObject.GetComponent<Street_Asc_Behaviour>();
CollisionSpeed = Mathf.Sqrt((2 * 900000) / (PlayerMass));
gameObject.GetComponent<Rigidbody>().AddForce(transform.forward * (-CollisionSpeed * StreetBehaviour.ObjectResistance), ForceMode.Impulse);
}
}
正如你所看到的,我在刚体中使用冻结位置和旋转,它在低速下工作得非常好。在高速时它不会检测到碰撞。
所以,如果你有更好的一个,那就太好了:)
由于