Проверка, столкнулся ли linerenderer с игровым объектом - PullRequest
0 голосов
/ 13 мая 2019

Я хотел проверить, не сталкивается ли линия, созданная linerenderer, с игровым объектом.Я попытался добавить boxcollider2d, компонент edgecollider2d к linerenderer, но не работает.Линия движется сверху вниз.У игрового объекта также есть боксерский коллайдер.

enter image description here

ОБНОВЛЕНИЕ Снимок экрана инспекторов игрового объекта

Gameobject, где столкнется линейный переводчикenter image description here

Затем в линейном переводчике.Я генерирую строку, используя скрипт enter image description here

myLine = new GameObject();
myLine.AddComponent<LineRenderer>();
    myLine.AddComponent<BoxCollider2D>();
    lr = myLine.GetComponent<LineRenderer>();
    lr.material = new Material(Shader.Find("Sprites/Default"));
    lr.positionCount = 3;
    lr.startWidth = .1f;
    lr.endWidth = .1f;
    lr.SetPosition(0, new Vector3(shapePositionValues.posA, shapePositionValues.posD, -1));
    lr.SetPosition(1, new Vector3(shapePositionValues.posB, shapePositionValues.posE, -1));
    lr.useWorldSpace = false;

1 Ответ

1 голос
/ 13 мая 2019

Две возможные проблемы, о которых я могу подумать:

Задача 1

Невозможно столкновение и взаимодействие 2D и 3D коллайдеров.Похоже, вы используете BoxCollider (3D), а не BoxCollider2D для того объекта, который выбран на вашем скриншоте.Вы упомянули, что пытались использовать BoxCollider2D и EdgeCollider2D для своей линии, которые являются 2D коллайдерами, которые не будут сталкиваться с вашим 3D коллайдером.

Задача 2

Ниже приведентаблица, которая суммирует взаимодействие коллайдера (не включает триггеры).

enter image description here

Вам всегда понадобится хотя бы один из объектов в столкновении, чтобы иметьRigidbody компонент.У вас есть статический коллайдер, обычный Rigidbody или кинематический Rigidbody для другого объекта, будет зависеть от того, как вы перемещаете / манипулируете объектами.

Если вы непосредственно перемещаете объект (устанавливая его положениекаждый кадр через код), тогда он должен быть Rigidbody с включенным IsKinematic.

Если вы устанавливаете скорость объекта или управляете им с помощью физических сил, это должен быть обычный Rigidbody.

Если объект никогда не движется, обычно это должен быть статический коллайдер (коллайдер без Rigidbody).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...