Как мне зафиксировать угол кватерниона для двери в 3D-сцене Unity C#?C#

Место общения программистов C#
Anonymous
Как мне зафиксировать угол кватерниона для двери в 3D-сцене Unity C#?

Сообщение Anonymous »

Я пытался сделать дверь в стиле «Фазмофобия», где вы щелкаете и перетаскиваете ручку, чтобы переместить дверь. Мне удалось это сделать, повернув петлю лицом к цели на противоположном конце двери, которую игрок может схватить как ручку двери.
Цель возвращается туда, где она должна была бы находиться на двери на самом деле. Я хочу, чтобы дверь перестала следовать за этой целью после достижения угла, определенного переменной, чтобы предотвратить это.
Проблема в том, что я сделал таргетинг, используя «Quaternion.LookRotation». И я не могу найти способ задать угловую переменную в углах Эйлера, чтобы ограничить, насколько далеко заходит это вращение взгляда.

По общему признанию, это в основном недостаток опыта кодирования.
private void Update()
{
DoorVector = transform.position;
TargetVector = DoorTarget.transform.position;

DoorX = DoorVector.x;
DoorZ = DoorVector.z;

TargetX = TargetVector.x;
TargetZ = TargetVector.z;

DoorRotation = Quaternion.LookRotation(new Vector3(TargetX, 0, TargetZ) - new Vector3(DoorX, 0, DoorZ));

spd = Mathf.Min (DoorSpeed * Time.deltaTime);
transform.rotation = Quaternion.Lerp (transform.rotation , DoorRotation, spd);
}
} private void Update()
{
DoorVector = transform.position;
TargetVector = DoorTarget.transform.position;

DoorX = DoorVector.x;
DoorZ = DoorVector.z;

TargetX = TargetVector.x;
TargetZ = TargetVector.z;

DoorRotation = Quaternion.LookRotation(new Vector3(TargetX, 0, TargetZ) - new Vector3(DoorX, 0, DoorZ));

//Psuedo Code: if(MaxAngle

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