Как сделать авто-закрытие дверей
Моя проблема такова, у меня есть 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 шт):
Почему бы не сделать триггер вокруг дверей. Скажем ставишь коллайдер на область 2,5 метра квадратных. Центр - дверь. Когда игрок покидает триггер - закрыть дверь.
То есть дверь не будет закрываться до того момента пока игрок вообще может с ней взаимодействовать. И никаких противодействующих сил не нужно прикладывать
вариант 2 - пытаться закрывать дверь только через 2 секунды после того как был CollisionEnd с игроком