RaycastHit на воду

Программирование на Юнити.

RaycastHit на воду

Сообщение Woolf 19 окт 2010, 00:55

Надо найти точку НА ВОДЕ и грунте, куда юзер кликнул мышой.
По грунту делал так:
Код: Выделить всё
            Ray ray1= cam.camera.ScreenPointToRay(Input.mousePosition);
            RaycastHit rayHit;
         
            Debug.Log("Raycast 1");    
            if (Physics.Raycast(ray1, out rayHit, 100.0f)) {
               Debug.Log("Raycast 2");    
               
               GameObject pointer=UnityEngine.Object.Instantiate (targetpointer) as GameObject;   
               pointer.transform.position=new Vector3(rayHit.point.x, Piscator.WaterLevel, rayHit.point.z);
               Destroy (pointer, 1);
            }


Но вот если кликать по воде, то получается что оно находит точку на грунте под водой. А сие неверно. Как лечится?

И еще один вопрос, может и не по теме.. Хочу чтобы при переключении камеры экран погасал в чёрный цвет и плавно проявлялся. Думал решить подобный эффект рисую чёрный ректангл на онгуи с изменяющейся альфой, да вот незадача, не смог найти, как отрисовать такой прямоугольник с альфой. Есть идеи, как реализовать подобную штуку?
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: RaycastHit на воду

Сообщение Paul Siberdt 19 окт 2010, 01:13

Лечится арифметически. Точка на грунте + глубина.

Fade-in и Fade-out у меня реализованы на квадратной плашке с Modulate-шейдером. Просто плашка торчит перед камерой и, когда нужно, включается ее рендерер и цвет шейдера меняется с черного на белый и наоборот.
Modulate приятнее мешает цвета с черным, чем AlphaBlending.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: RaycastHit на воду

Сообщение Pyx 19 окт 2010, 01:26

Paul Siberdt писал(а):Лечится арифметически. Точка на грунте + глубина.

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

Re: RaycastHit на воду

Сообщение Paul Siberdt 19 окт 2010, 01:50

Река с порогами - это уже другой уровень реализации. По-моему, речь идет о дефолтовой водяной поверхности редактора террейнов.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: RaycastHit на воду

Сообщение Zaicheg 19 окт 2010, 08:14

Но вот если кликать по воде, то получается что оно находит точку на грунте под водой. А сие неверно. Как лечится?

Коллайдер-то на водную поверхность киньте.

Хочу чтобы при переключении камеры экран погасал в чёрный цвет и плавно проявлялся.

Простой способ -- меш перед камерой с материалом Transparent/Diffuse и чёрным цветом. Потом просто меняем значение альфы цвета материала.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: RaycastHit на воду

Сообщение Woolf 19 окт 2010, 11:07

Лечится арифметически. Точка на грунте + глубина.


Как арифметически??
Изображение

Находится точка 1, вместо 2.
Можно, конечно, решать этот треугольник (ведь высоту воды мы знаем), но это как-то геморойно..

По поводу коллайдера - если поставить на воду коллайдер, то человек не сможет заходить в воду по пояс, а оно как бы планируется.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: RaycastHit на воду

Сообщение Pyx 19 окт 2010, 11:14

Наложите меш на поверхность и пускайте в него луч.
Последний раз редактировалось Pyx 19 окт 2010, 11:26, всего редактировалось 1 раз.
Pyx
 

Re: RaycastHit на воду

Сообщение Zaicheg 19 окт 2010, 11:23

Woolf писал(а):По поводу коллайдера - если поставить на воду коллайдер, то человек не сможет заходить в воду по пояс, а оно как бы планируется.

Вчера играл в домино с местными алкоголиками, так они говорят, что бывает свойство .isTrigger, а также игнорирование коллизий по слоям и по коллайдерам. Привидится же с перепою.
Только воду очень холодной не делайте, а то действительно тяжело будет по пояс-то.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: RaycastHit на воду

Сообщение Paul Siberdt 19 окт 2010, 12:24

Ну, треугольник.. а дальше? Чему в пятом классе учили? :)

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

Собственно, вам и дно не нужно... вы всегда можете получить пересечение линии визирования с водной поверхностью через размерность прямоугольного треугольника с гипотенузой глаз-коллизия и его положение в мире.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: RaycastHit на воду

Сообщение sp00n 19 окт 2010, 13:50

Какие треугольники, если мы знаем высоту воды? Имеем прямую, точнее отрезок(луч от глаз до дна) - соответственно, есть уравнение прямой, подставляем высоту, получаем недостающие координаты, профит.
Ты молод, креативен, талантлив?
Амбициозен, уверен в себе, полон свежих идей?
А делать хоть что-нибудь умеешь?!
sp00n
UNITрон
 
Сообщения: 254
Зарегистрирован: 27 фев 2010, 20:43

Re: RaycastHit на воду

Сообщение Paul Siberdt 19 окт 2010, 14:14

Да, вот еще более простой париант :) ... насмотря на то, что это та же самая тригонометрия и прямоугольный треугольник.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт


Вернуться в Скрипты

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

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