Отражение 2D-трансляции в Unity не работает должным образом

#c# #unity3d #game-physics

#c# #unity-игровой движок #физика игры

Вопрос:

Я хочу создать траекторию отражения с помощью средства визуализации линий, использующего 2d-физику. Отражение не работает должным образом, иногда оно работает, иногда нет. для 3d все работает нормально, если просто заменить vector2 на vecor3 и использовать физическую функцию 3d.

Возможно, это связано с коллайдером, или же я добавил box collider 2d к цветным блокам.

Я написал его код

 void GenerateRay(Vector2 position , Vector2 direction , int count){

    if(count==0) return;

    Vector2 oldPosition = position;

    RaycastHit2D hit = Physics2D.Raycast(position , direction , maxRayLenght);

    if(hit.collider!=null){

        direction = Vector2.Reflect(direction , hit.normal);
       print(direction);
        position = hit.point;
         print(position);

    }
    else
    {
        position  = direction*maxRayLenght;
    }


    lineRenderInstance[maxHop-count].SetPosition(0 , oldPosition);
    lineRenderInstance[maxHop-count].SetPosition(1 , position);



    GenerateRay(position , direction , count-1 );
}
  

если я изменяю расстояние y, отражение иногда работает, а иногда нет.[!

Нерабочий случай

введите описание изображения здесь

Рабочий случай, если изменить высоту введите описание изображения здесь

введите описание изображения здесь

Комментарии:

1. Может быть, это как-то связано с вашим maxRayLenght ?

2. @Dave увеличение длины луча также не работает.

3. пожалуйста, покажите, как настраиваются ваши спрайты в инспекторе, и код, в котором вы вызываете GenerateRay .

4. @Dave Я вызываю эту функцию в обновлении. Я добавил изображение настройки спрайта.

5. Попробуйте запустить свой код в FixedUpdate