Воскресенье, 01 Декабря 2024, 15:20

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Результаты поиска
valekoДата: Четверг, 04 Августа 2011, 20:13 | Сообщение # 41 | Тема: Вопрос - Ответ (Game Maker)
частый гость
Сейчас нет на сайте
Честь и хвала тебе, о великий мегагуру LunarPixel!

Радостно убежал примерять открывшиеся возможности.

Хотя вот еще мысль появилась, как думаешь, не очень безграмотно?

1. Глобальная переменная сила_бомбы
2. Башня перед созданием бомбы присваивает значение глобальной переменной
3. Бомба запоминает значение глобальной переменной.

Из плюсов - не нужно знать никаких операторов smile :) smile

Только вот вопрос: не возможна ли такая ситуация, что какая-нибудь вторая башня изменит значение этой переменной до того, как первая успеет создать бомбу?


2D NoteWar

Сообщение отредактировал valeko - Пятница, 05 Августа 2011, 00:00
valekoДата: Четверг, 04 Августа 2011, 17:49 | Сообщение # 42 | Тема: Вопрос - Ответ (Game Maker)
частый гость
Сейчас нет на сайте
Quote (LunarPixel)
if id=instance_id[0]


Спасибо за такие подробности, обычно парой фраз ограничиваются. smile

Я тоже думал это как-то через Id организовать, но не могу прощупать логику создания. Видишь, в чем сложность:

1. У меня есть башни.
2. У каждой башни свой уровень развития, а соответственно сила удара.
3. Объект бомба у меня один для башен любого уровня.
4. Нужно как-то сохранять в самой бомбе уровень развития башни, которая ее выпустила.

Я думал, что это нужно сделать как-то так:
1. Создать глобальный массив массив_соответствия содержащий соответствие силы бомбы уровню башни
2. В момент создания бомбы: сила_бомбы= массив_соответствия[уровень_развития.ближайшая_к_бомбе_башня]
3. В момент удара во врага: жизнь-=other.сила_бомбы

Но никак не получается продумать это в операторах... И ID не понимаю, как к этому прикрутить. sad

Извини, что напрягаю.


2D NoteWar

Сообщение отредактировал valeko - Четверг, 04 Августа 2011, 17:56
valekoДата: Четверг, 04 Августа 2011, 13:47 | Сообщение # 43 | Тема: Вопрос - Ответ (Game Maker)
частый гость
Сейчас нет на сайте
О как! Спасибо огромное! Очень выручил.

Тогда еще вопрос, как обычно мне кажется - последний smile

Как объекту можно передать параметр?

Есть объект 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)
частый гость
Сейчас нет на сайте
Парни, я понимаю, что многим из вас мои вопросы кажутся примитивными. Но иногда не получается не спросить. sad

Например, у меня что-то не работает.

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)
частый гость
Сейчас нет на сайте
Блин. smile

Как это не обидно - все правильно заработало. smile Неуютно быть глупым smile Спасибо огромное.

Тогда еще вопрос:

В степе башни у меня прописано:

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 (Лер_да_Рим)
Хм, вообще если переменная не глобальна, она обязана быть локальной и меняться у каждого экземпляра отдельно.


Так я так и планировал. Но почему-то не работает...

И еще странное: ставлю несколько башен в разных местах экрана. На башнях проверка расстояния до врага. Как только враг приближается на это расстояние к ЛЮБОЙ башне - первая башня начинает по нему стрелять. Вот такая загогулина получается sad

Добавлено (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 ничего не изменилось. sad


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", то как сделать, чтобы мой враг правильно двигался по пути, а не просто дергался вверху экрана.

Спасибо, что дочитали до этого места. smile


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 пиксель


Прекрасная идея, очень понравилась. Спасибо. Но не получится, что рисовать опять удастся только из драва, а не из степа и выйдут те же грабли? smile


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
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг