|
[ На главную ] -- [ Список участников ] -- [ Правила форума ] -- [ Зарегистрироваться ] |
On-line: |
Game Maker Форум / Вопросы и Ответы (Для Опытных) / Целеуказатель |
Страницы: 1 |
Автор | Сообщение | |
anji частый гость Группа: Участники Сообщений: 28 |
Добавлено: 12-08-2006 20:46 | |
Здрасте, помогите, пожалуйсиа, сделать целеуказатель. Так, чтобы рисовалась линия от объекта Х до мышки, если попадалось препятствие на пути в виде floor, то линия рисовалась до точки там где collision_line находит floor. |
||
Siozia маэстро Группа: Сообщество GM Сообщений: 723 |
Добавлено: 12-08-2006 20:59 | |
То есть чтоб линия обходила препятствие, но все-равно досигала цели ? (такое как в Порт Рояль ?) | ||
anji частый гость Группа: Участники Сообщений: 28 |
Добавлено: 12-08-2006 21:08 | |
Нет, чтобы, если между объектом и мышкой есть препятствие, то и линия рисовалась до препятствие, а если, препятствия нет, то линия рисуется до объекта.... Я так думаю, надо делать через lengthdir_x(distance,direction) где distance - расстояние либо до объекта, либо до препятствия. |
||
anji частый гость Группа: Участники Сообщений: 28 |
Добавлено: 12-08-2006 22:34 | |
Нашел проблему, которая мешает. хх=lengthdir_x(1000,face_dir) уу=lengthdir_у(1000,face_dir) see_flor=collision_line(x,y,xх,уу,flor,1,1); на карте несколько объектов flor. Так вот, если потом, запустив пример, просматривать переменную see_flor когда (collision_line(x,y,xх,уу,flor,1,1) пересекает несколько flor), в переменную see_flor заносится 1. Если х мышки > х объекта - ближайший к объекту образец flor. 2. Если х мышки < х объекта - дальний от объекта образец flor. Соответственно и линия рисуется либо до ближайшего объекта flor(правильно), либо до дальнего объекта flor (неправильно). |
||
Ka1miK Тут могла быть ваша реклама Группа: Сообщество GM Сообщений: 1014 |
Добавлено: 14-08-2006 00:13 | |
Типа ты сам решил проблему?(чё надо помочь) | ||
anji частый гость Группа: Участники Сообщений: 28 |
Добавлено: 14-08-2006 13:01 | |
Да, как ни странно это звучит, я не программер. Решение где-то рядом, а своих мозговых ресурсов не хватает ещё:) или уже :( |
||
Ka1miK Тут могла быть ваша реклама Группа: Сообщество GM Сообщений: 1014 |
Добавлено: 14-08-2006 20:44 | |
Способ плохой, но на крайний метод можешь делать это циклом. Типа такого for (i=1;i<=1000;i+=1;) {хх=x+lengthdir_x(i,face_dir) уу=y+lengthdir_у(i,face_dir) see_flor=collision_point(xх,уу,flor,1,1); if see_flor>0 break;} Только это не рационально, моежшь поделить область(1000) и постепенно узнавать точную координату |
||
WertyXBOCT магистр Группа: Сообщество GM Сообщений: 453 |
Добавлено: 15-08-2006 13:02 | |
dir=point_direction(x,y,mouse_x,mouse_y) for(i=0;i<=1024;i+=4) { if instance_place(lengthdir_x(i,dir),lengthdir_y(i,dir),o_floor) then { break; //Есть вариант что надо сюда втыкать exit; } } xx=lengthdir_x(i,dir) yy=lengthdir_y(i,dir) //Точка в которой остановился цикл, а значит споткнулся об объект, если координаты относительно объекта добавь x+ |
||
Ka1miK Тут могла быть ваша реклама Группа: Сообщество GM Сообщений: 1014 |
Добавлено: 15-08-2006 20:40 | |
Я по сути тоже самое указал, но у тебя есть ошибка надо не
а instance_place(x+lengthdir_x(i,dir),y+lengthdir_y(i,dir),o_floor) then |
||
anji частый гость Группа: Участники Сообщений: 28 |
Добавлено: 16-08-2006 15:23 | |
Спасибо всем за помощь. Вопрос маленький!!! Зачем for(i=0;i<=1024;i+=4)? Почему сразу нельзя написать instance_place(x+lengthdir_x(i,1024),y+lengthdir_y(i,1024),o_floor)? Я просто хочу понять, что делае цикл... |
||
Ka1miK Тут могла быть ваша реклама Группа: Сообщество GM Сообщений: 1014 |
Добавлено: 18-08-2006 22:21 | |
А как мы по твоему узнаем точную позицию столкновения. Если ты не понял, мы проводим вектор, увеличивая его длину постепенно, пока не столкнёмся со стеной. Может вопрос не правильно задан. |
||
anji частый гость Группа: Участники Сообщений: 28 |
Добавлено: 18-08-2006 22:41 | |
Ты знаешь, я теперь понял - когда у меня всё получилось... Когда вектор сталкивается со стеной, то цикл прерывается... Спасибо за помощь. |
||
Paradox магистр Группа: Сообщество GM Сообщений: 462 |
Добавлено: 19-08-2006 11:50 | |
Ему просто лазер надо было сделать... хм ... |
Страницы: 1 |
Game Maker Форум / Вопросы и Ответы (Для Опытных) / Целеуказатель |