Как сделать авто-закрытие дверей

Моя проблема такова, у меня есть 3D дверь. Мне нужно, чтобы когда я открыл её (просто толкать своим телом), она сразу стремилась закрыться обратно при этом её сила закрытия не должна препятствовать силе игрока, чтобы игрок мог спокойно пройти. Я попробовал использовать HingeJoint, чтобы если Y двери != 0, то к двери прилагалась сила для закрытия, но моя задумка не работает

 public class DoorReset : MonoBehaviour
{
    public HingeJoint hinge;
    public Transform door;
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        var motor = hinge.motor;
        if(door.rotation.y == 0)
        {
           motor.force = 0; 
            motor.targetVelocity = 0; 
        }
        if(door.rotation.y > 0f)
        {
            Debug.Log("Door Y cord "+ door.rotation.y);
            motor.force = 2; 
            motor.targetVelocity = 10;
        }
        else if(door.rotation.y < 0f)
        {
            
            motor.force = -2; 
            motor.targetVelocity = -10;
        }
    }
}

Ответы (1 шт):

Автор решения: Andrew

Почему бы не сделать триггер вокруг дверей. Скажем ставишь коллайдер на область 2,5 метра квадратных. Центр - дверь. Когда игрок покидает триггер - закрыть дверь.

То есть дверь не будет закрываться до того момента пока игрок вообще может с ней взаимодействовать. И никаких противодействующих сил не нужно прикладывать

вариант 2 - пытаться закрывать дверь только через 2 секунды после того как был CollisionEnd с игроком

→ Ссылка