Как сделать воду в Unity3D?

проблема такая, я делаю 3Д игру и мне необходимо сделать физику воды, ну чтоб персонаж плавал на данный момент я пользуюсь методом OnTriggerEnter и OnTriggerExit в середине метода OnTriggerEnter находится if (other.tag == «Water»)
isSwimming = true;
rb.useGravity = false;
>
а в OnTriggerExit находится if (other.tag == «Water»)
isSwimming = false;
rb.useGravity = true;
>
потом я проверяю в Update (): if (Input.GetKey (KeyCode.Space) && isSwimming)
transform.Translate (0, SwimmingForse * Time.deltaTime 0)
>
и появляются следующие баги которые надо пофиксить, когда я всплыл меня перемещает обратно в воду по пояс при этом скорость сохраняется и меня тянет на дно если всплить несколько раз то скорость суммируется и даже если я держу пробел я все равно падаю в низ
а если снизу какая-то косая поверхность я лечу в сторону. Я понял что использовать отключение гравитации плохая идея подскажите как лучше сделать
- Вопрос задан более трёх лет назад
- 1192 просмотра
Комментировать
Решения вопроса 0
Ответы на вопрос 0
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- C#
- +1 ещё
Что делать, если объект проваливается, когда я пытаюсь его поставить туда куда смотрю?
- 1 подписчик
- 3 часа назад
- 19 просмотров
Water in Unity
Unity includes several water Prefabs (including the necessary Shaders, scripts and art Assets) within the Standard Assets packages. Separate daylight and nighttime water Prefabs are provided.
Note that the water reflections described in this document do not work in VR.

Setting up water
Place one of the existing water Prefabs into your Scene. Make sure you have the Standard Assets installed:
- В Unity есть Daylight Simple Water и Nighttime Simple Water в Standard Assets->Water.
- В Unity Pro есть Daylight Water и Nighttime Water в Pro Standard Assets->Water (но также требуются некоторые ассеты из Standard Assets->Water). Режим воды (Simple (простая), Reflective (отражающая), Refractive (преломляющая)) можно изменить в инспекторе.
Для воды префаб использует меш в форме овала. Если вы желаете использовать другой меш, то проще всего просто поменять его в Mesh Filter у объекта воды:

Создание воды с нуля (для продвинутых пользователей)
Простая вода в Unity требует добавления скрипта на плоский меш и использования шейдера воды:
- Подберите меш для воды. Это должен быть горизонтально ориентированный плоский меш. UV координаты не требуются. GameObject с водой должен использовать слой (layer) Water, который вы можете установить в инспекторе.
- Добавьте на объект скрипт WaterSimple (из Standard Assets/Water/Sources).
- Используйте шейдер FX/Water (simple) в материале, или подстройте один из предоставленных материалов воды (Daylight Simple Water или Nighttime Simple Water).
Отражающая/преломляющая вода в Unity Pro требует аналогичных шагов для настройки с нуля:
- Подберите меш для воды. Это должен быть горизонтально ориентированный плоский меш. UV координаты не требуются. GameObject с водой должен использовать слой (layer) Water, который вы можете установить в инспекторе.
- Добавьте на объект скрипт Water (из Pro Standard Assets/Water/Sources).
- Используйте шейдер FX/Water в материале, или подстройте один из предоставленных материалов воды (Daylight Water или Nighttime Water).
Свойства в материалах воды
Эти свойства используются в шейдере отражающей и преломляющей воды. Большинство из них также используется и в шейдере простой воды.
| Свойство: | Функция: |
|---|---|
| Wave scale | Изменение масштаба карты нормалей волн. Чем меньше значение, тем больше будут волны у воды. |
| Reflection/refraction distort | Как сильно отражение/преломление будет искажаться картой нормалей волн. |
| Refraction color | Дополнительный оттенок отражения. |
| Environment reflection/refraction | Render текстуры для отражения и преломления в реальном времени. |
| Normalmap | Определяет форму волн. Итоговые волны производятся путём совмещения этих двух карт нормалей, каждая из которых смещается в разном направлении, с разным масштабом и скоростью. Вторая карта нормалей в два раза меньше первой. |
| Wave speed | Скорость смещения для первой (1е и 2е числа) и второй карты нормалей (3е и 4е числа). |
| Fresnel | Текстура с альфа-каналом, управляющим эффектом Fresnel — количество видимого отражения против количества видимого преломления, в зависимости от угла зрения. |
Остальные свойства не используются отражающим и преломляющим шейдером, но должны быть настроены в случае, если графический ускоритель пользователя не поддерживает его и вынужден откатиться на более простой шейдер.
| Свойство: | Функция: |
|---|---|
| Reflective color/cube and fresnel | Текстура, которая определяет цвет воды (RGB) и эффект Fresnel (A), в зависимости от угла зрения. |
| Horizon color | Цвет воды на горизонте (используется только в шейдере простой воды). |
| Fallback texture | Текстура для отображения воды на очень старых видео картах, если не может работать ни один из более красивых шейдеров. |
Вода для Юнити. Как правильно сделать воду в приложении на Unity3D?

Чтобы воспользоваться этим префабом , нужно:
- Проделать первые 3 пункта, описанные выше.
- Потом вам буд у т доступн ы 2 папки: Water и Water4. Выбираем Water4.
- Внутри этой папки находим еще одну папку Prefabs.
- Тут вам будут доступны 2 префаба: Water4Simple и Water4Advanced. Оба эти компонента в принципе похожи, однако они отличаются некоторыми настройками.
- Выполните необходимые настройки положения, а также настройки в «Инспекторе».
- Наслаждайтесь результатом.
В 4-м пунк т е вам будет предложено 2 префаба. На первый взгляд они будут очень похож и , но это не так. Они отличаются настройками:
- зеркального отражения,
- световыми бликами,
- составом и цветом воды,
- гребнями волн,
- пеной на гребнях,
- и др.
Заключение
Вода в Unity добавляется не слишком сложно, если вас удовлетвори т качество предоставляемых инструментов самого движка. И сходя и з практики , стандартных инструментов достаточно для создания интересных игр, когда вода — это не основной элемент игры. Если же вам потребуется более «крутая» вода, тогда нужно будет вмешательство в код. А это тема уже для другой статьи.
В целом, все описанные 3 инструмента отличаются внешним видом самой воды. Поэтому вы смело можете опробовать все и для себя решить , с каким работать дальше.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Как мне работать с водой?
Важно: содержимое этой страницы применимо только к настольному режиму редактора.
В Unity включены некоторые префабы с водой (включая необходимые шейдеры, скрипты и ассеты с графикой) в пакетах Standard Assets и Pro Standard Assets. Unity содержит обычную простую воду, в то время как Unity Pro содержит воду с отражениями в реальном времени и преломлениями. В обоих случаях вода поставляется в качестве отдельных дневных и ночных префабов.

Настройка воды
В большинстве случаев вам достаточно просто разместить один из существующих префабов в вашей сцене (убедитесь, что у вас установлен набор стандартных ассетов):
- В Unity есть Daylight Simple Water и Nighttime Simple Water в Standard Assets->Water .
- В Unity Pro есть Daylight Water и Nighttime Water в Pro Standard Assets->Water (но также требуются некоторые ассеты из Standard Assets->Water ). Режим воды (Simple (простая), Reflective (отражающая), Refractive (преломляющая)) можно изменить в инспекторе.
Для воды префаб использует меш в форме овала. Если вы желаете использовать другой меш, то проще всего просто поменять его в Mesh Filter у объекта воды:

Создание воды с нуля (для продвинутых пользователей)
Простая вода в Unity требует добавления скрипта на плоский меш и использования шейдера воды:
- Подберите меш для воды. Это должен быть горизонтально ориентированный плоский меш. UV координаты не требуются. GameObject с водой должен использовать слой ( layer ) Water, который вы можете установить в инспекторе .
- Добавьте на объект скрипт WaterSimple (из Standard Assets/Water/Sources ).
- Используйте шейдер FX/Water (simple) в материале, или подстройте один из предоставленных материалов воды ( Daylight Simple Water или Nighttime Simple Water ).
Отражающая/преломляющая вода в Unity Pro требует аналогичных шагов для настройки с нуля:
- Подберите меш для воды. Это должен быть горизонтально ориентированный плоский меш. UV координаты не требуются. GameObject с водой должен использовать слой ( layer ) Water, который вы можете установить в инспекторе .
- Добавьте на объект скрипт Water (из Pro Standard Assets/Water/Sources ).
- Используйте шейдер FX/Water в материале, или подстройте один из предоставленных материалов воды ( Daylight Water или Nighttime Water ).
Свойства в материалах воды
Эти свойства используются в шейдере отражающей и преломляющей воды. Большинство из них также используется и в шейдере простой воды.
| Свойство: | Функция: |
|---|---|
| Wave scale | Изменение масштаба карты нормалей волн. Чем меньше значение, тем больше будут волны у воды. |
| Reflection/refraction distort | Как сильно отражение/преломление будет искажаться картой нормалей волн. |
| Refraction color | Дополнительный оттенок отражения. |
| Environment reflection/refraction | Render текстуры для отражения и преломления в реальном времени. |
| Normalmap | Определяет форму волн. Итоговые волны производятся путём совмещения этих двух карт нормалей, каждая из которых смещается в разном направлении, с разным масштабом и скоростью. Вторая карта нормалей в два раза меньше первой. |
| Wave speed | Скорость смещения для первой (1е и 2е числа) и второй карты нормалей (3е и 4е числа). |
| Fresnel | Текстура с альфа-каналом, управляющим эффектом Fresnel — количество видимого отражения против количества видимого преломления, в зависимости от угла зрения. |
Остальные свойства не используются отражающим и преломляющим шейдером, но должны быть настроены в случае, если графический ускоритель пользователя не поддерживает его и вынужден откатиться на более простой шейдер.
| Свойство: | Функция: |
|---|---|
| Reflective color/cube and fresnel | Текстура, которая определяет цвет воды (RGB) и эффект Fresnel (A), в зависимости от угла зрения. |
| Horizon color | Цвет воды на горизонте (используется только в шейдере простой воды). |
| Fallback texture | Текстура для отображения воды на очень старых видео картах, если не может работать ни один из более красивых шейдеров. |
Аппаратная поддержка
- Отражающая + преломляющая вода работает на видео картах с поддержкой pixel shader 2.0 (GeForce FX и новее, Radeon 9500 и новее, Intel 9xx). На более старых адаптерах используется отражающая вода.
- Отражающая вода работает на видео картах с поддержкой pixel shader 1.4 (GeForce FX и новее, Radeon 8500 и новее, Intel 9xx). На более старых видео картах используется простая вода.
- Простая вода работает практически везде, с различными уровнями детализации, в зависимости от аппаратных возможностей.