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

Автомобили движутся с применением прикладной скорости, и я постоянно применял скоростьдвигаться с постоянной скоростью.Просто при столкновении я на какое-то время прекратил применять скорость, чтобы получить ответ на столкновение.
Я хочу получить ответ на столкновение в соответствии с игрой Bumper.io: Bumper.io Часть 1 (IOS /Android)
В настоящее время я написал некоторый код для этой цели, но он ведет себя не совсем так:
void OnCollisionEnter(Collision other)
{
if (other.gameObject.CompareTag(GameConstants.TAG_ENEMY) || other.gameObject.CompareTag(GameConstants.TAG_PLAYER))
{
elapsedEngineStartWaiting = 0f;
StartCoroutine(ApplyReboundForce(other));
}
}
IEnumerator ApplyReboundForce(Collision other)
{
Vector3 centroid = new Vector3(0, 0, 0);
foreach (ContactPoint contact in other.contacts)
{
centroid += contact.point;
}
centroid = centroid / other.contacts.Length;
Vector3 projection = transform.position;
projection.x = centroid.x;
Vector3 normaliseCollisionPoint = Vector3.Normalize(projection - centroid);
float collidedBodyMass = other.gameObject.GetComponent<Rigidbody>().mass;
myRigidbody.velocity = Vector3.zero;
myRigidbody.angularVelocity = Vector3.zero;
int i = 0;
while (i < 4)
{
myRigidbody.AddForce(normaliseCollisionPoint * GameConstants.CAR_COLLISION_IMPULSE * collidedBodyMass, ForceMode.Impulse);
yield return new WaitForFixedUpdate();
i++;
}
}
В настоящее время направление силы реакции на столкновение не сохраняетсясогласно, я упоминал на изображении выше.Я хочу, чтобы сила / импульс должны применяться в вышеупомянутых направлениях.
Дайте мне несколько советов, чтобы я мог реализовать предложенные вещи.