Вручную применить силы реагирования столкновения автомобилей - PullRequest
0 голосов
/ 28 февраля 2019

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

enter image description here

Автомобили движутся с применением прикладной скорости, и я постоянно применял скоростьдвигаться с постоянной скоростью.Просто при столкновении я на какое-то время прекратил применять скорость, чтобы получить ответ на столкновение.

Я хочу получить ответ на столкновение в соответствии с игрой 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++;
    }
}

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

Дайте мне несколько советов, чтобы я мог реализовать предложенные вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...