Результаты поиска
| |
valeko | Дата: Четверг, 04 Августа 2011, 20:13 | Сообщение # 41 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| Честь и хвала тебе, о великий мегагуру LunarPixel!
Радостно убежал примерять открывшиеся возможности.
Хотя вот еще мысль появилась, как думаешь, не очень безграмотно?
1. Глобальная переменная сила_бомбы 2. Башня перед созданием бомбы присваивает значение глобальной переменной 3. Бомба запоминает значение глобальной переменной.
Из плюсов - не нужно знать никаких операторов :)
Только вот вопрос: не возможна ли такая ситуация, что какая-нибудь вторая башня изменит значение этой переменной до того, как первая успеет создать бомбу?
2D NoteWar
Сообщение отредактировал valeko - Пятница, 05 Августа 2011, 00:00 |
|
| |
valeko | Дата: Четверг, 04 Августа 2011, 17:49 | Сообщение # 42 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| Quote (LunarPixel) if id=instance_id[0]
Спасибо за такие подробности, обычно парой фраз ограничиваются.
Я тоже думал это как-то через Id организовать, но не могу прощупать логику создания. Видишь, в чем сложность:
1. У меня есть башни. 2. У каждой башни свой уровень развития, а соответственно сила удара. 3. Объект бомба у меня один для башен любого уровня. 4. Нужно как-то сохранять в самой бомбе уровень развития башни, которая ее выпустила.
Я думал, что это нужно сделать как-то так: 1. Создать глобальный массив массив_соответствия содержащий соответствие силы бомбы уровню башни 2. В момент создания бомбы: сила_бомбы= массив_соответствия[уровень_развития.ближайшая_к_бомбе_башня] 3. В момент удара во врага: жизнь-=other.сила_бомбы
Но никак не получается продумать это в операторах... И ID не понимаю, как к этому прикрутить.
Извини, что напрягаю.
2D NoteWar
Сообщение отредактировал valeko - Четверг, 04 Августа 2011, 17:56 |
|
| |
valeko | Дата: Четверг, 04 Августа 2011, 13:47 | Сообщение # 43 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| О как! Спасибо огромное! Очень выручил.
Тогда еще вопрос, как обычно мне кажется - последний
Как объекту можно передать параметр?
Есть объект Bomba. Как можно извратиться сделав что-нибудь типа Bomba(5) и Bomba (22), чтобы у первой бомбы была сила удара 5, а у второй, соответственно 22.
Задача усложняется тем, что проверка происходит со стороны врага. Типа если Vrag столкнулся с Bomba(5), то его жизнь уменьшается на это число.
2D NoteWar
|
|
| |
valeko | Дата: Четверг, 04 Августа 2011, 12:39 | Сообщение # 44 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| Согласен, что бывает. Только обидно, когда мешает не отсутствие логики, а просто незнание каких-то нюансов.
Вот, например, пытаюсь организовать вывод текста:
draw_set_font(0) // устанавливаю шрифт, который назначил по умолчанию make_color_rgb(0,5,212) // задаю нужный мне синий цвет draw_text(20,20,gold) // вывожу переменную
Выводится. Нужным шрифтом. Но цвет - черный.
Что не так? Или есть еще какой-то секретный оператор меняющий цвет именно для текста?
2D NoteWar
|
|
| |
valeko | Дата: Четверг, 04 Августа 2011, 00:29 | Сообщение # 45 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| Уже не знаю - переписал весь код заново и все заработало правильно.
2D NoteWar
|
|
| |
valeko | Дата: Среда, 03 Августа 2011, 21:04 | Сообщение # 46 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| Quote (SalahAdDin) Во первых алярм нужно чем то вызвать. Напиши например в криэйт alarm[0]=1 а далее в алярме то, что тебе нужно и зацикливай.
смотри пункт 4.4.
Quote (valeko) 4.4. Пишу в Create alarm[0] = 300; - никакого эффекта. Думаю больше часа. Пробую. Ничего не получается.
2D NoteWar
Сообщение отредактировал valeko - Среда, 03 Августа 2011, 21:06 |
|
| |
valeko | Дата: Среда, 03 Августа 2011, 16:16 | Сообщение # 47 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| Парни, я понимаю, что многим из вас мои вопросы кажутся примитивными. Но иногда не получается не спросить.
Например, у меня что-то не работает.
1. Анализирую алгоритм. Все логично с позиции программирования, все должно работать. 2. Проверяю по помощи, может какие-то из используемых операторов не правильно понял - все должно работать. 3. Ищу в сети подобные вопросы, уроки. Опять никаких ошибок.
Вот и остается только спросить или забросить проект.
Добавлено (03.08.2011, 16:16) --------------------------------------------- Ну вот, например:
1. Сделал врага, который двигается по пути. Поставил его на карте. 2. Сделал башню, которая стреляет по врагу, поставил ее на карте. 3. Враг ходит и убивается, башня стреляет. Все отлично. Пора двигаться дальше.
4. Пытаюсь сделать генератор врагов, чтобы не вручную их на карте ставить, а чтобы они поочереди выходили из одного места. 4.1. Создаю генератор dom_vraga, прописываю ему в Alarm 0 instance_create(100,120,vrag); alarm[0] = 130+random(160); 4.2. Ничего не рисуется 4.3. Вставляю тот же код в Step - все рисуется не переставая, т.е. сплошная полоса, состоящая из монстров, не учитывается задержка. 4.4. Пишу в Create alarm[0] = 300; - никакого эффекта. Думаю больше часа. Пробую. Ничего не получается.
Как в таком случае не спросить.
Вот и спрашиваю: что я делаю не так?
2D NoteWar
Сообщение отредактировал valeko - Среда, 03 Августа 2011, 16:17 |
|
| |
valeko | Дата: Вторник, 02 Августа 2011, 23:11 | Сообщение # 48 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| Так я именно самонаводящиеся и делал. Это уже следующий уровень развития башни :).
Слушай, а есть какая-нибудь документация на русском, кроме туториала. А то я его прочитал, но понимания многих вопросов это не добавляет.
Да, кстати, еще раз спасибо, все заработало именно так, как я хотел.
2D NoteWar
Сообщение отредактировал valeko - Среда, 03 Августа 2011, 00:53 |
|
| |
valeko | Дата: Вторник, 02 Августа 2011, 22:08 | Сообщение # 49 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| Блин.
Как это не обидно - все правильно заработало. Неуютно быть глупым Спасибо огромное.
Тогда еще вопрос:
В степе башни у меня прописано: if (distance_to_object(vrag) < 40) { if id.shoot=1 {instance_create(x,y,bomba)
В степе бомбы:
direction=point_direction(x,y,vrag.x,vrag.y)
В результате этого пока первый враг не уничтожен, остальных башни вообще игнорируют.
Понимаю, что проблема примерно та же, но то же самое решение не подойдет.
2D NoteWar
Сообщение отредактировал valeko - Вторник, 02 Августа 2011, 22:09 |
|
| |
valeko | Дата: Вторник, 02 Августа 2011, 21:34 | Сообщение # 50 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| Quote (SalahAdDin) Она должна создаваться в координатах текущей башни а не первой созданной. Разве это не логично?
Очень логично. Но разве obj_tower.x,obj_tower.y это не координаты текущей башни? Почему они координаты именно первой, и как сделать, чтобы они ими не были (в смысле как указать координаты именно текущей башни, а не первой)? Ведь конструкция id.obj_tower.x не работает.
2D NoteWar
Сообщение отредактировал valeko - Вторник, 02 Августа 2011, 21:36 |
|
| |
valeko | Дата: Вторник, 02 Августа 2011, 20:58 | Сообщение # 51 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| Quote (Лер_да_Рим) Хм, вообще если переменная не глобальна, она обязана быть локальной и меняться у каждого экземпляра отдельно.
Так я так и планировал. Но почему-то не работает...
И еще странное: ставлю несколько башен в разных местах экрана. На башнях проверка расстояния до врага. Как только враг приближается на это расстояние к ЛЮБОЙ башне - первая башня начинает по нему стрелять. Вот такая загогулина получается Добавлено (02.08.2011, 20:58) ---------------------------------------------
Quote (valeko) Убери указатель obj_tower из координат бомбы, не?
Так это же координаты создания бомбы. Она же должна в башне создаваться.
Quote (valeko) valeko, ещё один?! Народ, когда цитируем фразу, сверяем фразу пользователя и его ник!
Извини, я не понял о чем ты?
2D NoteWar
|
|
| |
valeko | Дата: Вторник, 02 Августа 2011, 10:03 | Сообщение # 52 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| Quote (SalahAdDin) Может быть, переменная shoot меняется во всех экземплярах объекта башни? Попробуй перед переменной shoot и alarm0 без пробела писать id.
Да, ты абсолютно прав, shoot меняется во всех экземплярах объекта башни. Но я думал, что т.к. не объявлял ее глобальной, она автоматически будет локальной для каждой башни.
И, к сожалению, после добавления id ничего не изменилось.
2D NoteWar
|
|
| |
valeko | Дата: Вторник, 02 Августа 2011, 01:20 | Сообщение # 53 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| Quote (SalahAdDin) Draw не влияет на положение обьекта, но чтобы рисовать его спрайт в правильном месте используй в функции draw_sprite() координаты обьекта.
Смотри, при создании, я назначаю спрайту путь. В степе у меня прописано image_angle=direction. Он абсолютно правильно двигается по пути.
Как только в дело вступает Draw, image_angle=direction не срабатывает, смещение по оси y не срабатывает. Он движется только по горизонтали, туда-обратно.
В функции draw_sprite() у меня стоит x и y, а событие Draw я вызываю как раз в том объекте, который должен рисовать. Соответственно это и есть координаты объекта.
Вопрос. Как заставить объект поворачиваться на нужный угол и следовать пути не только по горизонтали.
Спасибо.Добавлено (02.08.2011, 01:20) --------------------------------------------- И еще один вопрос:
Ставлю в комнате башню. Она отслеживает перемещение врага, стреляет при приближении. Ставлю еще одну такую же башню. Перемещение она отслеживает, но не стреляет.
Код в степе
if (distance_to_object(obj_vrag) < 150) { if shoot=1 {instance_create(obj_tower.x,obj_tower.y,obj_bomba) shoot = 0 alarm[0]=10}}
Я думал, что сколько башен не поставлю - все будут стрелять. Но стреляет только первая. Удаляю ее - начинает стрелять вторая. И т.д.
Где я туплю?
2D NoteWar
Сообщение отредактировал valeko - Понедельник, 01 Августа 2011, 22:31 |
|
| |
valeko | Дата: Понедельник, 01 Августа 2011, 21:16 | Сообщение # 54 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| Я пытаюсь сделать игру типа "Защита башни"
Я, наверное, совсем тупые вопросы задаю...
Хорошо, оставим health в покое. Попробую еще раз вопрос сформулировать.
Допустим, у меня есть пачка врагов. Они каким-нибудь генератором создаются, каждый с рандомным здоровьем. Над каждым полоска этого здоровья. На старте - полоска здоровья одинакового размера у всех, независимо от того какая цифра за этой полоской скрывается.
Все враги дружной толпой прут по дороге (путь - сложная фигура). При приближении к башне на определенное расстояние, та начинает стрелять. При попадании во врага полоска уменьшается (у каждого врага на свою величину, т.к. стартовое здоровье у всех разное). Если здоровье <= 0, враг уничтожается.
Тут мне все понятно, кроме того, как эту полоску нарисовать. Как получить сами цифры здоровья и урона я понимаю. НО как их вывести на экран в виде полоски - ничего не выходит.
Теперь, наконец-то, сам вопрос:
1. Как вывести эту полоску, не используя событие "Draw"? 2. Если все же только через "Draw", то как сделать, чтобы мой враг правильно двигался по пути, а не просто дергался вверху экрана.
Спасибо, что дочитали до этого места.
2D NoteWar
|
|
| |
valeko | Дата: Понедельник, 01 Августа 2011, 18:49 | Сообщение # 55 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| Quote (arthur33) Можно просто создать новый объект и туда поместить в draw draw_healthbar(10,10,200,12,health,c_gray,c_red,c_red,0,1,1). А не писать это в драве главного героя
А каким образом он определит какой health показывать. Т.е. если у меня несколько однотипных врагов, над каждым полоска жизни. Когда рисование жизни вложено в сам персонаж, то я понимаю, как это работает. А если жизнь рисуется отдельным объектом - как установить эту связь?
Странная ситуация, это то, что я ниже написал:
ДО: Спрайт двигался по окружности (правильно разворачиваясь в направлении пути) ПОСЛЕ: Спрайт двигается только по 0 оси y, направлен только в одну сторону. Т.е. просто передвигается слева-направо и обратно вверху экрана на ширину окружности.Добавлено (01.08.2011, 18:49) ---------------------------------------------
Quote (BrightSpot) я не имел дел с путями но что бы рисовать "крутящийся спрайт используй draw_sprite_ext(sprite_index,-1,x,y,1,1,rot,c_white,1) rot-поворот спрайта...
Спасибо, но про окружность я для примера написал, там на самом деле сложный путь, по которому двигается спрайт.
Quote (BrightSpot) кста что бы без ф-ции рисования зделать индикатор жизней создай спрайт в 1 пиксель
Прекрасная идея, очень понравилась. Спасибо. Но не получится, что рисовать опять удастся только из драва, а не из степа и выйдут те же грабли?
2D NoteWar
|
|
| |
valeko | Дата: Понедельник, 01 Августа 2011, 14:55 | Сообщение # 56 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| Хорошо, спасибо. А можно ли как-то вывести индикатор жизни не используя функции рисования?
Я попробовал вставить в "Step" draw_healthbar(10,10,200,12,health,c_gray,c_red,c_red,0,1,1) но все равно не рисуется.
А при использовании draw_sprite(sprite0,x,y,-1) тоже возникает странная ситуация.
ДО: Спрайт двигался по окружности (правильно разворачиваясь в направлении пути) ПОСЛЕ: Спрайт двигается только по 0 оси y, направлен только в одну сторону. Т.е. просто передвигается слева-направо и обратно вверху экрана на ширину окружности.
2D NoteWar
|
|
| |
valeko | Дата: Понедельник, 01 Августа 2011, 12:11 | Сообщение # 57 | Тема: Вопрос - Ответ (Game Maker) |
частый гость
Сейчас нет на сайте
| Извините, если вопрос покажется примитивным:
1. Я запустил объект по пути. Двигается и разворачивается. 2. Над объектом размещаю индикатор жизни. Если помещаю его в событии "Step" - он не рисуется. Если в событии "Draw", то он рисуется но самого объекта тогда не видно.
В итоге по пути перемещается только индикатор жизни, без самого объекта. Подскажите, пожалуйста, как это исправить.
2D NoteWar
|
|
| |
|