Самонаведение на ближайшую цель

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

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

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

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

мастер
Группа: Сообщество GM
Сообщений: 78
Добавлено: 31-01-2007 09:44
Для самонаведения я придумал вот это:
{
enemy=furiya
enemy=vrag
...(и тд)
if
distance_to_object(enemy)<100
direction=point_direction(x,y,enemy.x,enemy.y);
}
Но как сделать чтобы ракета летела к ближайшему enemy?!
Что то в голове крутица, а осмыслить не могу!


мастер
Группа: Участники
Сообщений: 70
Добавлено: 01-02-2007 15:56
Попробуй так: у каждого врага в крейте заведи переменную ItIsAnEmemy=true;
Процесс нацеливания ракеты (напиши его в крейте ракеты или в степе, если хочешь чтобы она могла перенацеливаться, но не запускай его в каждом кадре, все-таки процедура длинная)
rasst=1000;
target=0;
global.missile=id;
with all if ItIsAnEnemy
{
a=point_distance(x,y,global.missile.x,global.missile.y);
if a<global.missile.rasst
{
global.missile.target=id;
global.missile.rasst=a;
}
}
После этого переменная target будет показывать тебе ID ближайшего на данным момент врага.


Группа: Участники
Сообщений: 9
Добавлено: 01-02-2007 17:59
не знаю, может я по ламерски это сделал, но гораздо проще все:
есть обьект parent_enemy - все враги его child'ы при выстреле создаю missile в обьекте missile в криэйте прописано target=instance_nearest(parent_enemy) (дословно не помню, ф-я которая возвращает id ближайшего обьекта) а потом по алармам move to point target.x , target.y

ну вот так. кстати долго парился, вообще не представлял в начале как это сделать))

Володька
Группа: Сообщество GM
Сообщений: 1648
Добавлено: 01-02-2007 21:58
var ii;
ii=instance_nearest(x,y,o_enemy);
if ii!=noone
{
direction=point_direction(x,y,ii.x,ii.y);
}

Это у того, кто наводится

Если врагов много, то делаешь у всех врагов общего parent'a под названием o_enemy. (код тот же)

мастер
Группа: Участники
Сообщений: 70
Добавлено: 02-02-2007 10:00
Можно и так... просто я не сторонник плодить лишние объекты, стараюсь вместо этого вводить лишние переменные.


Группа: Участники
Сообщений: 9
Добавлено: 02-02-2007 10:11
в каком смысле - лишние объекты? есть player, enemy, missile - кто лишний? :)))

мастер
Группа: Участники
Сообщений: 70
Добавлено: 02-02-2007 10:15
Лишний - parent_enemy. У тебя как я понял это просто указатель на то, что такой-то объект - враг. В моем примере таким указателем является переменная it_is_an_enemy.


Группа: Участники
Сообщений: 9
Добавлено: 02-02-2007 10:20
а, понял тебя. но у меня parent_enemy - не только для идентификации. это как бы "болванка", прописаны основные переменные, общие для всех врагов, и, самое главное, столкновения со всеми видами выстрелов. а их более 150. тоесть каждый раз, создавая врага не вариант это все загонять в него - легче присвоить ему parent'a

мастер
Группа: Сообщество GM
Сообщений: 78
Добавлено: 04-02-2007 09:23
О всё проблема решена,спасибо всем.Блин как я забыл про id объектов !Спасибо всем!

магистр
Группа: Сообщество GM
Сообщений: 453
Добавлено: 06-02-2007 14:15
Про лишние объекты. У меня трех ботов охначает один объект, и уних парент объект солид. Все столкновения с ним просчитывются.

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

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

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

KXK.RU