Твердые тела соприкасаются, но OnCollisionStay перестает вызываться (Unity3D)C#

Место общения программистов C#
Anonymous
Твердые тела соприкасаются, но OnCollisionStay перестает вызываться (Unity3D)

Сообщение Anonymous »

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

Изображение
< /p>

Это мой код SpringForceTransmiser.cs:
с использованием UnityEngine;

Код: Выделить всё

public Rigidbody InverseJoint;

private void OnCollisionEnter(Collision collision) {
Debug.Log("Enter");
}

private void OnCollisionExit(Collision collision) {
Debug.Log("Exit");
}

private void OnCollisionStay(Collision collision) {
InverseJoint.AddForce(-(collision.rigidbody.mass * Physics.gravity));
Debug.Log("Stay");
}
А это видео того, что происходит.

Итак, согласно логу, показанному на видео, OnCollisionStay() перестает вызываться, даже если OnCollisionExit() никогда не вызывался. Как это возможно? Я всегда думал, что OnCollisionStay() вызывается в каждом кадре из кадра OnCollisionEnter и кадра OnCollisionExit.

Может ли кто-нибудь пролить свет на то, что здесь происходит?

Подробнее здесь: https://stackoverflow.com/questions/470 ... ed-unity3d

Вернуться в «C#»