#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