The collider did not create any collision shapes ошибка

In the above diagram, we can see that size should be relatively appropriate, and there should not be any rotation. This could be a false assumption. What we do not see is the game object hierarchy, in which our problem object could still be parented1 under another game object.

Should the game object be parented to another game object, you still want to observe the scale and rotation of any parents. Both of these will be multiplied by local values, in order to give world values. World values are what really matter, in context of the error being displayed.


In this case, I believe this could point to additional rotation. You say that the circle collider works fine — this would not be the case, if world scale really did make the game object too small.

However, as discussed on the Unity Answers site, the box collider can still throw this error as it approaches 90 degree rotations. This is because the rotation converts to a skew in the interpreted size, and at 90 degrees, one of the axis is going to be approaching rather minimal values. As the error reports, we can’t have that.


Ultimately, if this is the case, you need to figure out if you need the parent. If you do, in turn, you should decide if you need rotation. If you need rotation, you should use a circle collider, instead.

Failing all that, due to the precise nature of your problem, I would honestly put this down to a Unity bug.

1 It occurs to me that I have missed the additional note that there is no parent, but it is still worth addressing the code where you instantiate objects. You can set a parent during instantiation without it visually displaying so in the hierarchy. I’m unsure why such a method would be useful, as it took me some time to figure it out, too.

Не могу добавить Box Collider 2D к модели. Модель 3D (отображается 2D, просто нужны тени), сама игра в 2D. Шкала масштабирования модели 50. Саи коллайдер по Х растягивается, а по Y нет. (Circle Collider работает) введите сюда описание изображения

The collider did not create any collision shapes as they all failed
verification. This could be because they were deemed too small or the
vertices were too close. Vertices can also become close under certain
rotations or very small scaling.

задан 22 мар 2019 в 15:04

Eloren's user avatar

ElorenEloren

2852 серебряных знака12 бронзовых знаков

6

Развернул в blender модель набок, чтобы внутри движка ничего не переворачивать по X, Z — Box Collider 2D создается и хорошо редактируется.

ответ дан 22 мар 2019 в 19:29

Eloren's user avatar

ElorenEloren

2852 серебряных знака12 бронзовых знаков

In the above diagram, we can see that size should be relatively appropriate, and there should not be any rotation. This could be a false assumption. What we do not see is the game object hierarchy, in which our problem object could still be parented1 under another game object.

Should the game object be parented to another game object, you still want to observe the scale and rotation of any parents. Both of these will be multiplied by local values, in order to give world values. World values are what really matter, in context of the error being displayed.


In this case, I believe this could point to additional rotation. You say that the circle collider works fine — this would not be the case, if world scale really did make the game object too small.

However, as discussed on the Unity Answers site, the box collider can still throw this error as it approaches 90 degree rotations. This is because the rotation converts to a skew in the interpreted size, and at 90 degrees, one of the axis is going to be approaching rather minimal values. As the error reports, we can’t have that.


Ultimately, if this is the case, you need to figure out if you need the parent. If you do, in turn, you should decide if you need rotation. If you need rotation, you should use a circle collider, instead.

Failing all that, due to the precise nature of your problem, I would honestly put this down to a Unity bug.

1 It occurs to me that I have missed the additional note that there is no parent, but it is still worth addressing the code where you instantiate objects. You can set a parent during instantiation without it visually displaying so in the hierarchy. I’m unsure why such a method would be useful, as it took me some time to figure it out, too.

Не могу добавить Box Collider 2D к модели. Модель 3D (отображается 2D, просто нужны тени), сама игра в 2D. Шкала масштабирования модели 50. Саи коллайдер по Х растягивается, а по Y нет. (Circle Collider работает) введите сюда описание изображения

The collider did not create any collision shapes as they all failed
verification. This could be because they were deemed too small or the
vertices were too close. Vertices can also become close under certain
rotations or very small scaling.

задан 22 мар 2019 в 15:04

Ярослав Смирнов's user avatar

6

Развернул в blender модель набок, чтобы внутри движка ничего не переворачивать по X, Z — Box Collider 2D создается и хорошо редактируется.

ответ дан 22 мар 2019 в 19:29

Ярослав Смирнов's user avatar

Как сделать след за объектом

Нужно сделать так чтобы шарик летя за собой оставлял линию (стену) по типу box collidera. Соответственно этот же шарик должен обрабатывать столкновения со своим «хвостом»
А визуальный эффект хочется как в trial renderering.

Подскажите в какую сторону смотреть?

egorych8
UNIт
 
Сообщения: 71
Зарегистрирован: 28 июл 2020, 16:06

Re: Как сделать след за объектом

Сообщение Jarico 29 июл 2020, 13:25

Создаёшь копии, потом идёшь по массиву после каждого обновления прибавляешь индекс

Пример кода

Используется csharp

Object yourObject;
Object[] array;

uint index = 0;
void FixedUpdate()
{
array[index % array.Length].transform.position = yourObject.transform.position;
index++;
}

Аватара пользователя
Jarico
Адепт
 
Сообщения: 1044
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт

Re: Как сделать след за объектом

Сообщение egorych8 29 июл 2020, 14:13

То есть только посредством кода? Нет ли в самом unity инструмента для подобного?

Ведь это не линия будет и просчёт столкновений будет как с множеством окружностей.
Как тогда найти длину этого пути после скажем 30 секунд?

egorych8
UNIт
 
Сообщения: 71
Зарегистрирован: 28 июл 2020, 16:06

Re: Как сделать след за объектом

Сообщение egorych8 30 июл 2020, 06:29

Как я понял инструмент это mesh collder.
Но пока не понятно как им пользоваться.

egorych8
UNIт
 
Сообщения: 71
Зарегистрирован: 28 июл 2020, 16:06

Re: Как сделать след за объектом

Сообщение samana 30 июл 2020, 22:00

Вы можете получить все точки текущего trail, и пускать широкий луч поочерёдно от первой точки до второй, от второй до третьей и т.д.
Таким образом у вас «создаётся» изогнутая «труба» своего рода коллайдеров, с которыми можно засечь пересечения.

Например в коде ниже использовался trail с настройками по-умолчанию.
Двигая объект по сцене, можно настроить ширину «трубопровода коллайдеров» с помощью Gizmo.
Так же в консоль выводятся имена объектов, который в данный момент пересекаются с trail.

Думаю в сети есть варианты получше, это всего лишь набросок идеи.

Используется csharp

using UnityEngine;

public class TrailTest : MonoBehaviour
{
    public float radiusTest = 0.5f; // ширина trail для проверки на пересечения
    public bool showRadiusGizmos; // вкл/выкл тестовый визуальный подбор ширины

    private TrailRenderer _trail;
    void Start()
    {
        _trail = GetComponent<TrailRenderer>();
    }

    void Update()
    {
        // получаем все точки следа (это точки по середине линии).
        Vector3[] positions = new Vector3[_trail.positionCount];
        _trail.GetPositions(positions);

        // проходим по всем точкам, начиная со второй
        for (int i = 1; i < positions.Length; i++)
        {
            // ссылки на текущю точку и предыдущую
            Vector3 currentPoint = positions[i];
            Vector3 previusPoint = positions[i 1];

            // получаем направление и расстояние от текущей точки до предыдущей
            Vector3 direction = previusPoint currentPoint;
            float distance = direction.magnitude;

            // создаём луч от текущей точки в направлении в предыдущей
            Ray ray = new Ray(currentPoint, direction);

            // запускаем круглый луч в ширину radiusTest, от текущей точки строго до предыдущей
            RaycastHit hit;
            if (Physics.SphereCast(ray, radiusTest, out hit, distance))
            {
                // игнорируем столкновение с самим собой
                // и выводим в консоль объекты с которыми пересёкся текущий луч.
                if (hit.collider.gameObject == gameObject) continue;
                else Debug.Log(hit.collider.name);
            }
        }
    }

    // это метод для тестирования радиуса, чтобы увидеть на сцене его размер.
    // можно удалить этот метод, он не задействован в расчётах.
    private void OnDrawGizmos()
    {
        if (!showRadiusGizmos) return;

        if (_trail == null) _trail = GetComponent<TrailRenderer>();

        Vector3[] positions = new Vector3[_trail.positionCount];
        _trail.GetPositions(positions);

        foreach (var point in positions)
        {
            Gizmos.DrawWireSphere(point, radiusTest);
        }

    }

}

Аватара пользователя
samana
Адепт
 
Сообщения: 4733
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Как сделать след за объектом

Сообщение Jarico 30 июл 2020, 22:03

samana писал(а):Думаю в сети есть варианты получше, это всего лишь набросок идеи.

Фризы будут из-за каста сферы, лучше использовать RaycastCommand и NativeArray для оптимизации

Аватара пользователя
Jarico
Адепт
 
Сообщения: 1044
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт

Re: Как сделать след за объектом

Сообщение samana 30 июл 2020, 22:08

Jarico писал(а):

samana писал(а):Думаю в сети есть варианты получше, это всего лишь набросок идеи.

Фризы будут из-за каста сферы, лучше использовать RaycastCommand и NativeArray для оптимизации

Спасибо, даже не слышал об этих фишках!

Аватара пользователя
samana
Адепт
 
Сообщения: 4733
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Как сделать след за объектом

Сообщение egorych8 31 июл 2020, 14:28

Нашел методику использования line renderering.
Создается префаб

и после создается объект с ссылкой на префаб.
Но вместо рисования мышкой кривой у меня рисует только точки в месте нажатия мышкой и всё…

не могу понять почему,ведь я написал точно также как в примере
.

Разобрался с визуализацией!
Однако линия не материальна, она не просчитывается на столкновения с другими объектами.
Пишет следующеее-
» The collider did not create any collision shapes as they all failed verification. This could be because they were deemed too small or the vertices were too close. Vertices can also become close under certain rotations or very small scaling. «

egorych8
UNIт
 
Сообщения: 71
Зарегистрирован: 28 июл 2020, 16:06

Re: Как сделать след за объектом

Сообщение egorych8 01 авг 2020, 09:08

Разбираюсь с edge collider для придания физики объекту (линия).

Создаются лишь две точки с одной и той же координатой (координаты где первый раз нажатие на мышку) и никаких collisions нет с другими объектами.
Изображение
Сцена выглядит так. Шарик пролетает сквозь линию. С обычным box collider всё работает.
Изображение

Правильно ли в скрипте вызывается edgecollider2D? Line renderer работает как надо.

Разобрался.

egorych8
UNIт
 
Сообщения: 71
Зарегистрирован: 28 июл 2020, 16:06

Здравствуйте, я недавно начал изучать Юнити, так как подумал что хочется не только играть а и создать что-то своё, и спустя день столкнулся с тем чего не понимаю. Я создал два объекта и дал им компонент Сollider 2D, так как один из объектов герой, также я ему дал Rigidbody 2D и скрипт передвижения по клавишам. (У героя Body Type — Kinematic). Когда я запустил проверить персонаж к моей радости двигался и весьма неплохо, вот только он проходил сквозь объект насквозь место того что бы ударится об него.
Помогите!
Вот скрипт для передвижения, может в нём ошибка.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class control : MonoBehaviour
{
public float speed;
private Rigidbody2D rb;
private Vector2 moveVelocity;

void Start()
{
rb = GetComponent < Rigidbody2D > ();
}

void Update()
{
Vector2 moveInput = new Vector2(Input.GetAxisRaw(«Horizontal»), Input.GetAxisRaw(«Vertical»));
moveVelocity = moveInput.normalized * speed;

}
void FixedUpdate()
{
rb.MovePosition(rb.position + moveVelocity * Time.fixedDeltaTime);
}
}


  • Вопрос задан

    более двух лет назад

  • 1448 просмотров

>У героя Body Type — Kinematic
У героя Body Type должен быть Dynamic, иначе физика не заработает. Тип Kinematic — положение объектом полностью управляется скриптом, а не физикой. Значит, если вы хотите использовать физику, то используйте тип Dynamic.

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

Для начала рекомендую серию из трёх статей (во второй см. комментарий для доработки старого кода в новых версиях юнити)

Пригласить эксперта

rb = GetComponent(); Это так не работает, потому что у тебя на обьекте много компонентов, поэтому нужно указать тип.rb = GetComponent<Rigidbody2D >();
И еще чтобы сработала функцияOnCollisionEnter2D тебе нужно ее написать…

То есть:

private void OnCollisionEnter2D(Collision2D collision)
    {
        //и тут ты описываешь что тебе нужно сделать при столкновении. 
    }

И на следующий раз проверь все сам, а потом задавай вопрос)


  • Показать ещё
    Загружается…

31 янв. 2023, в 07:51

50000 руб./за проект

31 янв. 2023, в 07:34

4500 руб./за проект

31 янв. 2023, в 04:30

200 руб./за проект

Минуточку внимания

Unity 3d — Помощь в написании скриптов.

Aswo Дата: Ср, 01 Апр 2015, 16:00 | Сообщение # 1381

КЗОИ

 

Награды: 18

Репутация: 430

Статус: Offline

Максим, значит абсолютно аналогично.
1 в 1


end.

 
игнат Дата: Вс, 19 Апр 2015, 15:38 | Сообщение # 1382
 

Награды: 0

Репутация: 107

Статус: Offline

Как заставить UI делать OnCollisionEnter2D?
Или что-то похожее по функционалу.
P.S.: именно между самими UI-объектами.



Правила форума · участник GCC

 
Левша Дата: Пн, 20 Апр 2015, 16:25 | Сообщение # 1383

Черный Волк

 

Награды: 30

Репутация: 3313

Статус: Offline

Цитата игнат ()

Как заставить UI делать OnCollisionEnter2D?

Заставить стандартно, если не сработает — значит гуй не умеет. smile


X.cor.R (Prologue)

 
seaman Дата: Пн, 20 Апр 2015, 19:09 | Сообщение # 1384

Гуру

 

Награды: 10

Репутация: 660

Статус: Offline

Цитата

OnCollisionEnter2D … между самими UI-объектами

А где Вы видели 2д коллайдер на UI объектах? А если его нет — каким образом они это могут делать?
Попробуй добавить на них коллайдер…

 
игнат Дата: Пн, 20 Апр 2015, 19:18 | Сообщение # 1385
 

Награды: 0

Репутация: 107

Статус: Offline

Да, но ведь это вроде как коллизия, а она должна быть у всех объектов. Триггер с ui вообще на разных планетах, переделывать всё на спрайты — уже поздно.



Правила форума · участник GCC

 
seaman Дата: Пн, 20 Апр 2015, 19:26 | Сообщение # 1386

Гуру

 

Награды: 10

Репутация: 660

Статус: Offline

Цитата

она должна быть у всех объектов

С чего вдруг? Нет коллайдера — нет коллизии.

 
игнат Дата: Пн, 20 Апр 2015, 19:28 | Сообщение # 1387
 

Награды: 0

Репутация: 107

Статус: Offline

Да-да… но чем заменить?



Правила форума · участник GCC

 
seaman Дата: Пн, 20 Апр 2015, 19:30 | Сообщение # 1388

Гуру

 

Награды: 10

Репутация: 660

Статус: Offline

Еще раз. Попробуй добавить на UI элемент 2D коллайдер.
 
игнат Дата: Пн, 20 Апр 2015, 19:49 | Сообщение # 1389
 

Награды: 0

Репутация: 107

Статус: Offline

И, что делать-то?
Даже переписал предупреждение:

Цитата

The collider did not create any collision shapes as they all failed verification. This could be because they were deemed too small or the Vertices were too close. Vertices can also become close under certain rotations or very small scaling.

P.S.: я это ещё вчера узнал.



Правила форума · участник GCC

 
seaman Дата: Пн, 20 Апр 2015, 19:59 | Сообщение # 1390

Гуру

 

Награды: 10

Репутация: 660

Статус: Offline

Добавляй не полигон коллайдер, а бокс или типа того. У полигон коллайдера нельзя поменять размер…

Цитата

я это ещё вчера узнал

Партизан…
________
Что то я туплю. И у полигон коллайдера можно поменять размер. Просто нажав кнопку редактирования…

 
игнат Дата: Пн, 27 Апр 2015, 19:41 | Сообщение # 1391
 

Награды: 0

Репутация: 107

Статус: Offline

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

Как ограничить Vector2? Задать ему Min & Max?



Правила форума · участник GCC

 
Левша Дата: Вт, 28 Апр 2015, 11:13 | Сообщение # 1392

Черный Волк

 

Награды: 30

Репутация: 3313

Статус: Offline

Цитата

ограничить Vector2? Задать ему Min & Max?

Mathf.Clamp();


X.cor.R (Prologue)

 
mikhach Дата: Вт, 16 Июн 2015, 14:21 | Сообщение # 1393
Нет аватара 

Награды: 0

Репутация: 0

Статус: Offline

Здравствуйте. Подскажите как можно сделать такую штуку. Есть игрок и есть объект. Игрок может собирать объекты. Когда игрок попадает в коллайдер объекта, объект пропадает(destroy), игрок его подбирает. Есть анимация подбора игроком предмета. Можно как-нибудь сделать чтобы предмет пропадал не сразу, как игрок попал в коллайдер объекта, а через некоторое время, чтобы успела пройти анимация когда игрок наклоняется за объектом.
Это анимация подбора:

Код

public class PlayerControl : MonoBehaviour {
  Animator anim;
  private bool pickUp;

  void Start () {
   anim = GetComponent<Animator> ();
   pickUp = false;
  }

     void Update () {

       anim.SetBool («pickUp», pickUp);
  }

       void OnTriggerEnter2D(Collider2D other)
   {
    if (other.tag == «mushrooms») {
     pickUp = true;
    } else
     pickUp = false;

      }
}

 
QNicolya Дата: Вт, 16 Июн 2015, 14:40 | Сообщение # 1394

God gave Rock’N’Roll to you

 

Награды: 3

Репутация: 352

Статус: Offline

Подозреваю, что время анимации четко известно, потому можно вызывать ко-рутину через определенное время.


Если человек вас обманул — он мошенник, если он вас обманул дважды — вы дурак.

 
mikhach Дата: Вт, 16 Июн 2015, 15:30 | Сообщение # 1395
Нет аватара 

Награды: 0

Репутация: 0

Статус: Offline

QNicolya, вы имеете ввиду вызов корутины для пропадания объекта(destroy)?
 
seaman Дата: Вт, 16 Июн 2015, 16:34 | Сообщение # 1396

Гуру

 

Награды: 10

Репутация: 660

Статус: Offline

В меканим есть события. Нужно их использовать.
 
mikhach Дата: Сб, 20 Июн 2015, 21:58 | Сообщение # 1397
Нет аватара 

Награды: 0

Репутация: 0

Статус: Offline

Цитата

В меканим есть события. Нужно их использовать.

seaman, Что-то ничего не нашел по событиям. Что это за события?

 
игнат Дата: Пт, 11 Сен 2015, 20:03 | Сообщение # 1398
 

Награды: 0

Репутация: 107

Статус: Offline

Так, ещё раз:
Как сделать, чтобы тело rigitbody не теряло энергии?



Правила форума · участник GCC

 
игнат Дата: Сб, 12 Сен 2015, 22:31 | Сообщение # 1399
 

Награды: 0

Репутация: 107

Статус: Offline

*При столкновении с другим телом. (2D)



Правила форума · участник GCC

 
Левша Дата: Вс, 13 Сен 2015, 14:15 | Сообщение # 1400

Черный Волк

 

Награды: 30

Репутация: 3313

Статус: Offline

Применять к ней силу.


X.cor.R (Prologue)

 
  • Страница 70 из 71
  • «
  • 1
  • 2
  • 68
  • 69
  • 70
  • 71
  • »

Tiled Forum

Loading

Как сделать след за объектом

Нужно сделать так чтобы шарик летя за собой оставлял линию (стену) по типу box collidera. Соответственно этот же шарик должен обрабатывать столкновения со своим «хвостом»
А визуальный эффект хочется как в trial renderering.

Подскажите в какую сторону смотреть?

egorych8
UNIт
 
Сообщения: 71
Зарегистрирован: 28 июл 2020, 16:06

Re: Как сделать след за объектом

Сообщение Jarico 29 июл 2020, 13:25

Создаёшь копии, потом идёшь по массиву после каждого обновления прибавляешь индекс

Пример кода

Используется csharp

Object yourObject;
Object[] array;

uint index = 0;
void FixedUpdate()
{
array[index % array.Length].transform.position = yourObject.transform.position;
index++;
}

Аватара пользователя
Jarico
Адепт
 
Сообщения: 1075
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт

Re: Как сделать след за объектом

Сообщение egorych8 29 июл 2020, 14:13

То есть только посредством кода? Нет ли в самом unity инструмента для подобного?

Ведь это не линия будет и просчёт столкновений будет как с множеством окружностей.
Как тогда найти длину этого пути после скажем 30 секунд?

egorych8
UNIт
 
Сообщения: 71
Зарегистрирован: 28 июл 2020, 16:06

Re: Как сделать след за объектом

Сообщение egorych8 30 июл 2020, 06:29

Как я понял инструмент это mesh collder.
Но пока не понятно как им пользоваться.

egorych8
UNIт
 
Сообщения: 71
Зарегистрирован: 28 июл 2020, 16:06

Re: Как сделать след за объектом

Сообщение samana 30 июл 2020, 22:00

Вы можете получить все точки текущего trail, и пускать широкий луч поочерёдно от первой точки до второй, от второй до третьей и т.д.
Таким образом у вас «создаётся» изогнутая «труба» своего рода коллайдеров, с которыми можно засечь пересечения.

Например в коде ниже использовался trail с настройками по-умолчанию.
Двигая объект по сцене, можно настроить ширину «трубопровода коллайдеров» с помощью Gizmo.
Так же в консоль выводятся имена объектов, который в данный момент пересекаются с trail.

Думаю в сети есть варианты получше, это всего лишь набросок идеи.

Используется csharp

using UnityEngine;

public class TrailTest : MonoBehaviour
{
    public float radiusTest = 0.5f; // ширина trail для проверки на пересечения
    public bool showRadiusGizmos; // вкл/выкл тестовый визуальный подбор ширины

    private TrailRenderer _trail;
    void Start()
    {
        _trail = GetComponent<TrailRenderer>();
    }

    void Update()
    {
        // получаем все точки следа (это точки по середине линии).
        Vector3[] positions = new Vector3[_trail.positionCount];
        _trail.GetPositions(positions);

        // проходим по всем точкам, начиная со второй
        for (int i = 1; i < positions.Length; i++)
        {
            // ссылки на текущю точку и предыдущую
            Vector3 currentPoint = positions[i];
            Vector3 previusPoint = positions[i 1];

            // получаем направление и расстояние от текущей точки до предыдущей
            Vector3 direction = previusPoint currentPoint;
            float distance = direction.magnitude;

            // создаём луч от текущей точки в направлении в предыдущей
            Ray ray = new Ray(currentPoint, direction);

            // запускаем круглый луч в ширину radiusTest, от текущей точки строго до предыдущей
            RaycastHit hit;
            if (Physics.SphereCast(ray, radiusTest, out hit, distance))
            {
                // игнорируем столкновение с самим собой
                // и выводим в консоль объекты с которыми пересёкся текущий луч.
                if (hit.collider.gameObject == gameObject) continue;
                else Debug.Log(hit.collider.name);
            }
        }
    }

    // это метод для тестирования радиуса, чтобы увидеть на сцене его размер.
    // можно удалить этот метод, он не задействован в расчётах.
    private void OnDrawGizmos()
    {
        if (!showRadiusGizmos) return;

        if (_trail == null) _trail = GetComponent<TrailRenderer>();

        Vector3[] positions = new Vector3[_trail.positionCount];
        _trail.GetPositions(positions);

        foreach (var point in positions)
        {
            Gizmos.DrawWireSphere(point, radiusTest);
        }

    }

}

Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Как сделать след за объектом

Сообщение Jarico 30 июл 2020, 22:03

samana писал(а):Думаю в сети есть варианты получше, это всего лишь набросок идеи.

Фризы будут из-за каста сферы, лучше использовать RaycastCommand и NativeArray для оптимизации

Аватара пользователя
Jarico
Адепт
 
Сообщения: 1075
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт

Re: Как сделать след за объектом

Сообщение samana 30 июл 2020, 22:08

Jarico писал(а):

samana писал(а):Думаю в сети есть варианты получше, это всего лишь набросок идеи.

Фризы будут из-за каста сферы, лучше использовать RaycastCommand и NativeArray для оптимизации

Спасибо, даже не слышал об этих фишках!

Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Как сделать след за объектом

Сообщение egorych8 31 июл 2020, 14:28

Нашел методику использования line renderering.
Создается префаб

и после создается объект с ссылкой на префаб.
Но вместо рисования мышкой кривой у меня рисует только точки в месте нажатия мышкой и всё…

не могу понять почему,ведь я написал точно также как в примере
.

Разобрался с визуализацией!
Однако линия не материальна, она не просчитывается на столкновения с другими объектами.
Пишет следующеее-
» The collider did not create any collision shapes as they all failed verification. This could be because they were deemed too small or the vertices were too close. Vertices can also become close under certain rotations or very small scaling. «

egorych8
UNIт
 
Сообщения: 71
Зарегистрирован: 28 июл 2020, 16:06

Re: Как сделать след за объектом

Сообщение egorych8 01 авг 2020, 09:08

Разбираюсь с edge collider для придания физики объекту (линия).

Создаются лишь две точки с одной и той же координатой (координаты где первый раз нажатие на мышку) и никаких collisions нет с другими объектами.
Изображение
Сцена выглядит так. Шарик пролетает сквозь линию. С обычным box collider всё работает.
Изображение

Правильно ли в скрипте вызывается edgecollider2D? Line renderer работает как надо.

Разобрался.

egorych8
UNIт
 
Сообщения: 71
Зарегистрирован: 28 июл 2020, 16:06

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24

Возможно, вам также будет интересно:

  • Teso ошибка при загрузке персонажа
  • Teso ошибка интерфейса как убрать
  • Teso ошибка интерфейса как исправить
  • Teso ошибка интерфейса lua
  • Teso ошибка входа произошла непредвиденная внутренняя ошибка

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии