Целеуказатель

  Вход на форум   логин       пароль   Забыли пароль? Регистрация
On-line:  

Раздел: 
Game Maker Форум / Вопросы и Ответы (Для Опытных) / Целеуказатель

Страницы: 1  новая тема

Автор Сообщение

частый гость
Группа: Участники
Сообщений: 28
Добавлено: 12-08-2006 20:46
Здрасте, помогите, пожалуйсиа, сделать целеуказатель.
Так, чтобы рисовалась линия от объекта Х до мышки, если попадалось препятствие на пути в виде floor, то линия рисовалась до точки там где collision_line находит floor.

маэстро
Группа: Сообщество GM
Сообщений: 723
Добавлено: 12-08-2006 20:59
То есть чтоб линия обходила препятствие, но все-равно досигала цели ? (такое как в Порт Рояль ?)

частый гость
Группа: Участники
Сообщений: 28
Добавлено: 12-08-2006 21:08
То есть чтоб линия обходила препятствие, но все-равно досигала цели ? (такое как в Порт Рояль ?)


Нет, чтобы, если между объектом и мышкой есть препятствие, то и линия рисовалась до препятствие, а если, препятствия нет, то линия рисуется до объекта....
Я так думаю, надо делать через lengthdir_x(distance,direction) где distance - расстояние либо до объекта, либо до препятствия.

частый гость
Группа: Участники
Сообщений: 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 (неправильно).

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 14-08-2006 00:13
Типа ты сам решил проблему?(чё надо помочь)

частый гость
Группа: Участники
Сообщений: 28
Добавлено: 14-08-2006 13:01
Типа ты сам решил проблему?(чё надо помочь)


Да, как ни странно это звучит, я не программер.
Решение где-то рядом, а своих мозговых ресурсов не хватает ещё:) или уже :(

Тут могла быть ваша реклама
Группа: Сообщество 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) и постепенно узнавать точную координату

магистр
Группа: Сообщество 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+

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 15-08-2006 20:40
Я по сути тоже самое указал, но у тебя есть ошибка
надо не
if instance_place(lengthdir_x(i,dir),lengthdir_y(i,dir),o_floor) then

а
instance_place(x+lengthdir_x(i,dir),y+lengthdir_y(i,dir),o_floor) then

частый гость
Группа: Участники
Сообщений: 28
Добавлено: 16-08-2006 15:23
Я по сути тоже самое указал, но у тебя есть ошибка
надо не
if instance_place(lengthdir_x(i,dir),lengthdir_y(i,dir),o_floor) then

а
instance_place(x+lengthdir_x(i,dir),y+lengthdir_y(i,dir),o_floor) then


Спасибо всем за помощь. Вопрос маленький!!!
Зачем for(i=0;i<=1024;i+=4)?
Почему сразу нельзя написать instance_place(x+lengthdir_x(i,1024),y+lengthdir_y(i,1024),o_floor)?
Я просто хочу понять, что делае цикл...

Тут могла быть ваша реклама
Группа: Сообщество GM
Сообщений: 1014
Добавлено: 18-08-2006 22:21
А как мы по твоему узнаем точную позицию столкновения.
Если ты не понял, мы проводим вектор, увеличивая его длину постепенно, пока не столкнёмся со стеной.
Может вопрос не правильно задан.

частый гость
Группа: Участники
Сообщений: 28
Добавлено: 18-08-2006 22:41
А как мы по твоему узнаем точную позицию столкновения.
Если ты не понял, мы проводим вектор, увеличивая его длину постепенно, пока не столкнёмся со стеной.
Может вопрос не правильно задан.


Ты знаешь, я теперь понял - когда у меня всё получилось...
Когда вектор сталкивается со стеной, то цикл прерывается...
Спасибо за помощь.

магистр
Группа: Сообщество GM
Сообщений: 462
Добавлено: 19-08-2006 11:50
Ему просто лазер надо было сделать... хм ...

Страницы: 1  новая тема
Раздел: 
Game Maker Форум / Вопросы и Ответы (Для Опытных) / Целеуказатель

Отвечать на темы в данном разделе могут только зарегистрированные пользователи

Отвечать на темы могут только зарегистрированные пользователи

KXK.RU