Unity3D настраиваемая проблема суставов - PullRequest
0 голосов
/ 02 ноября 2018

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

Вот фрагмент кода:

playerJoint.connectedAnchor = anchor.transform.position;
SoftJointLimit limit = new SoftJointLimit();
limit.limit = Vector3.Distance(anchor.transform.position, transform.position);
playerJoint.linearLimit = limit;
playerJoint.yMotion = ConfigurableJointMotion.Limited;
playerJoint.xMotion = ConfigurableJointMotion.Limited;

И затем, когда игрок отжимает кнопку, запускается следующий код:

playerJoint.yMotion = ConfigurableJointMotion.Free;
playerJoint.xMotion = ConfigurableJointMotion.Free;

Заранее спасибо.

1 Ответ

0 голосов
/ 02 ноября 2018

Это очень похоже на проблему Rigidbody.interpolation .

Если это не так, попробуйте вручную изменить положение игрока на желаемую длину. Что-то вроде:

Vector3 hinge2Player = player.transform.position - anchor.transform.position;
hinge2Player = Vector3.ClampMagnitude(hinge2Player, /* [distance you want] */);
player.transform.position = hinge2Player + anchor.transform.position;

Существует также небольшая вероятность того, что это поможет, поскольку кажется, что вы пытаетесь сделать что-то подобное.

...