Как прикрепить объект к другому unity
Перейти к содержимому

Как прикрепить объект к другому unity

Unity — Как привязать объект к объекту, если он сталкивается с дочерним объектом

У меня есть телескопический гаджет с шипами в игре, над которой я работаю. Шип должен быть приспособлением для руки игрока, которое позволит ему прилипать к стене, как только острие шипа (самый глубокий дочерний объект) чего-то касается. По сути, я хочу, чтобы он «вонзился» в стену и удерживал игрока на месте.

Ближе всего к этому я подошел, установив для параметра «Режим контактных пар» значение «Включить кинематические кинематические пары», а затем добавив в наконечник кинематическое жесткое тело и фиксированное соединение. Вот код самого шипа:

Вот код столкновения острия шипа:

А вот иерархия активов игрока:

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

Несмотря на это, игрок отскакивает и может свободно двигаться, как будто сустава не существует. Может ли кто-нибудь помочь мне узнать, почему плеер не крепится к стене?

TL; DR: Как я могу получить дочерний объект с RigidBody для подключения к другому объекту через FixedJoint?

1 ответ

Сначала создайте два компонента FixedJoint на кончике и назначьте их полям в скрипте. Назначьте жесткое тело игрока полю в скрипте. Назначьте твердое тело и коллайдер наконечника полю в скрипте.

Во-вторых, когда происходит столкновение, выключите isKinematic, чтобы наконечник воздействовал на суставы (например, чтобы он следовал за закрепленными врагами, если они двигаются).

В-третьих, когда вы хотите завершить привязку, вы должны просто иметь возможность снова установить isKinematic в значение true, присвоить обоим его соединенным соединенным телам значение null и, при необходимости, отключить его коллайдер, чтобы избежать

Вы можете сделать то же самое с наконечником, который никогда не будет кинематическим, если хотите, вам просто нужно будет Destroy суставы вместо установки connectedBody на ноль, а также создать суставы только при столкновении это может выглядеть следующим образом:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *