Стрельба рейкастами

Общие вопросы о Unity3D

Стрельба рейкастами

Сообщение Denpiz 07 май 2013, 15:44

Как можно реализовать прострел объекта насквозь, что бы при этом в месте попадания создавалась дырка от пули (на входе и на выходе)?
Denpiz
UNIт
 
Сообщения: 144
Зарегистрирован: 12 янв 2013, 03:36

Re: Стрельба рейкастами

Сообщение nile 07 май 2013, 16:04

пустить 2 рэйкаста в противоположных направлениях. Первый от игрока в мишень. Второй с другой стороны тоже в мишень, но на том же луче.

Синтаксис:
Используется csharp
Ray = <...>;  //собственно луч
RaycastHit hit1; //первая точка касания
RaycastHit hit2; //вторая точка касания
if( Physics.Raycast(дуло.position,Ray, out hit1) //первый рейкаст
{
    1)Делаем первую дырку в точке hit1.point
    2)пускаем луч с другой стороны в противоположном направлении
if( Physics.Raycast( hit1.point + ray.normalized * 1метр (толщина цели условно), -Ray , out hit2) //рэйкаст, противоположный первому с отступом от первой дурки на 1 метр
     {
     Делаем вторую дырку в точке hit2.point
     }
}

 
Последний раз редактировалось nile 07 май 2013, 20:59, всего редактировалось 1 раз.
Аватара пользователя
nile
Старожил
 
Сообщения: 848
Зарегистрирован: 25 фев 2011, 17:17

Re: Стрельба рейкастами

Сообщение Denpiz 07 май 2013, 17:10

Спасибо, а если 2 простреливаемые стены подряд?
Denpiz
UNIт
 
Сообщения: 144
Зарегистрирован: 12 янв 2013, 03:36

Re: Стрельба рейкастами

Сообщение nile 07 май 2013, 18:04

Да хоть все 10, алгоритм тот же. Мб что по проще кто-то предложит. (popcorn)
Аватара пользователя
nile
Старожил
 
Сообщения: 848
Зарегистрирован: 25 фев 2011, 17:17

Re: Стрельба рейкастами

Сообщение Denpiz 07 май 2013, 19:06

По идеи пуля на вылет не пройдет, врезается в объект и создает две дырки. Как это поправить?
Denpiz
UNIт
 
Сообщения: 144
Зарегистрирован: 12 янв 2013, 03:36

Re: Стрельба рейкастами

Сообщение nile 07 май 2013, 19:15

Ну в чем проблема то? Допишите дополнительные условия, когда будет запускаться встречный рейкаст, а когда нет.
Аватара пользователя
nile
Старожил
 
Сообщения: 848
Зарегистрирован: 25 фев 2011, 17:17

Re: Стрельба рейкастами

Сообщение Denpiz 07 май 2013, 20:22

Так встречный рейкаст же для создания места вылета пули, а как сделать что бы мой патрон продалжал движение после попадания в стену в ту сторону куда я стрелял?
Denpiz
UNIт
 
Сообщения: 144
Зарегистрирован: 12 янв 2013, 03:36

Re: Стрельба рейкастами

Сообщение nile 07 май 2013, 20:26

Полет пули как описан? Физически или геометрически?
Если геометрией - ну и пусть летит дальше. Если физикой - отключить колайдер у нее, например.
Аватара пользователя
nile
Старожил
 
Сообщения: 848
Зарегистрирован: 25 фев 2011, 17:17

Re: Стрельба рейкастами

Сообщение Denpiz 07 май 2013, 20:58

Сама стрельба реализована лучем
if(Physics.Raycast(transform.position, DirectionRay, out Hit, 1000f))
{

}
Проблема в том что луч не проходит сквозь объекты. Точнее есть вариант сделать его игнорирующим некоторые объекты, но тогда я с ними совсем не смогу взаимодействовать. Дело в том что мне недо что бы мой луч попадал в стену, создавая 2 дыры на входе и выходе, и продолжал свой путь. По идеи мне надо пускать еще один луч из hit2.point, но как ему задать тоже направление? Наверно надо было сразу расписать подробно, извиняюсь.
Denpiz
UNIт
 
Сообщения: 144
Зарегистрирован: 12 янв 2013, 03:36

Re: Стрельба рейкастами

Сообщение nile 07 май 2013, 21:07

Да, но у вас есть волшебный DirectionRay, которому пофиг на стены :p

Берете любую точку на этом луче и пускаете новый рэйкаст в том же направлении.

То есть в итоге: летел луч, уперся в стену. Узнали точку попадания hit. Добавили к его позиции DirectionRay.normalazed * wallS , таким образом получили точку, которая так же лежит на луче, но на wallS дальше от hit.point относительно нас. Пускаем следующий рейкаст и тд.

DirectionRay.normalazed - нормализованный вектор
wallS - условно говоря толщина стенки,тип float, впринцыпе можно примерно указать.
Аватара пользователя
nile
Старожил
 
Сообщения: 848
Зарегистрирован: 25 фев 2011, 17:17

Re: Стрельба рейкастами

Сообщение Denpiz 07 май 2013, 21:10

Спасибо большое, завтро поизучаю док и попробую написать тогда.
Denpiz
UNIт
 
Сообщения: 144
Зарегистрирован: 12 янв 2013, 03:36

Re: Стрельба рейкастами

Сообщение Good1101 07 май 2013, 21:22

а не проще ли RaycastAll юзать?
--------
хотя наверно нет, не понял в начале вопроса)
Как тут стрелять?
Аватара пользователя
Good1101
Адепт
 
Сообщения: 1100
Зарегистрирован: 17 ноя 2011, 14:07
  • ICQ


Вернуться в Общие вопросы

Кто сейчас на конференции

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