Я работал над автомобильной войной 3d, поэтому каждая машина пытается сбить другие машины. Основываясь на столкновении, я тащил столкнувшиеся автомобили, применяя ручную силу.

При столкновении применить ручную силу, чтобы отправить их обратно. Вот код, который я использовал:
void OnCollisionEnter (Collision other)
{
if (other.gameObject.CompareTag (GameConstants.TAG_ENEMY)) {
appliedSpeed = speed * 0.5f;
elapsedEngineStartWaiting = 0f;
ApplyReboundForce (other);
}
}
private void ApplyReboundForce (Collision other)
{
Vector3 force = transform.position - other.transform.position;
force.Normalize ();
myRigidbody.AddForce (force * 150f, ForceMode.Force);
}
Используя скорость, я вел машину:
elapsedEngineStartWaiting += Time.deltaTime;
if (elapsedEngineStartWaiting < 0.7f) {
return;
}
// Move the player forward
// thisTransform.Translate(Vector3.forward * Time.deltaTime * speed, Space.Self);
appliedSpeed += Time.fixedDeltaTime * 7f;
appliedSpeed = Mathf.Min (appliedSpeed, speed);
myRigidbody.velocity = transform.forward * appliedSpeed;
В настоящее время после столкновения поведение автомобиля при движении назад остается динамичным в зависимости от текущей скорости автомобиля и угла столкновения, хотя я подавал постоянный импульс на твердое тело.
Я хочу, чтобы столкнувшиеся машины получили одинаковую силу отскока, как в моей реализации геймплея. Этого я не могу достичь, поэтому я хочу, чтобы ваша сторона внесла несколько предложений.