Как вы могли создать ультразвуковое c видение в Unity3d? (Bat Vision) - PullRequest
0 голосов
/ 22 апреля 2020

У меня была идея создать игру, в которой вы увидите все как летучую мышь. Есть некоторые люди , которые достигли чего-то подобного.

Проблема в том, что я хотел бы иметь другой тип "Bat Vision". Это довольно сложно объяснить, но если я посмотрю в одном направлении, а затем поверну персонажа, я все равно увижу то, на что смотрел раньше.

Объяснение с отметками времени:

  • Se c 0: я смотрю на точку А, где объект находится на расстоянии 300 метров
  • Se c 1: я поворачиваюсь в точку B и вижу объект на расстоянии 100 метров
  • Se c 2: Я вижу объекты A и B одновременно
  • Se c 3: Я все еще вижу объект B

Объяснение с изображением: enter image description here Как вы видите, игрок сначала стреляет в ультразвук c волны a сначала на A , а затем на волнах b на B . Они оба возвращаются одновременно, так что оба объекта видны одновременно.

Если вы не поняли, почему я вижу объекты с задержкой. Как известно, звук движется со скоростью около 1/3 км / с. Таким образом, объект, который находится на расстоянии 300 метров, будет виден примерно через 2 секунды c.

Я уже пытался выстрелить RayCasts или GameObjects в направлении, и чем дальше они будут, тем темнее будет пиксель в этой позиции. Но, как вы можете думать ... Съемка 2 миллионов RayCasts каждого кадра не очень здорова. Я также думал о Shaders, но я не знаю, как возможно, что кто-то все еще видит Shaders, глядя в другое направление. Также у меня нет большого опыта работы с Shaders, и мне все равно понадобится помощь.

Я был бы рад, если у кого-то есть другая идея, как я мог бы создать это.

Ответы [ 3 ]

0 голосов
/ 22 апреля 2020

Для этого проще всего использовать шейдер с эффектом изображения, который обращается к буферу глубины.

  • Значение каждого пикселя в буфере глубины по определению равно расстоянию этого пикселя в мире до камеры.
  • Вы можете уменьшить значение каждого пикселя на какое-то значение каждый раз. секунду и установите значение max каждые X секунд на основе расстояния, заданного буфером глубины ... это даст эффект отскока звука от этого объекта обратно на плеер
0 голосов
/ 24 апреля 2020

https://www.youtube.com/watch?v=OKoNp2RqE9A настроить цвета для достижения необходимого эффекта

0 голосов
/ 22 апреля 2020

Мне кажется, что, возможно, вы захотите продублировать любые сетки и поверхности, которые ваш игрок "видел", и держать это в поле зрения с некоторыми настройками освещения Grayi sh. И все «реальные» объекты скрыты, то есть у всех их компонентов MeshRenderer отключены или удалены.

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

Чтобы выяснить, что дублировать, я уверен, что вам понадобится намного меньше raycast, чем делать это для каждого пикселя. Клонируйте меня sh, затем проверьте видимость для каждой вершины и установите видимость в дублированном цвете вершины и альфа.

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