Вопрос - Ответ (Game Maker)
| |
Лер_да_Рим | Дата: Воскресенье, 31 Июля 2011, 10:04 | Сообщение # 1921 |
заслуженный участник
Сейчас нет на сайте
| Code if keyboard_check(ord('K')) {очки -= 1} else {очки += 1}
Дамы и господа, я представляю вам человека, которому н-а-с-р-а-т-ь! (с) Доктор Кокс.
Сообщение отредактировал Лер_да_Рим - Воскресенье, 31 Июля 2011, 10:04 |
|
| |
arthur33 | Дата: Воскресенье, 31 Июля 2011, 11:34 | Сообщение # 1922 |
участник
Сейчас нет на сайте
| оО...Сделать
- Опыт - это то, что получаешь, не получив того, чего хотел. Новая головоломка
|
|
| |
valeko | Дата: Понедельник, 01 Августа 2011, 12:11 | Сообщение # 1923 |
частый гость
Сейчас нет на сайте
| Извините, если вопрос покажется примитивным:
1. Я запустил объект по пути. Двигается и разворачивается. 2. Над объектом размещаю индикатор жизни. Если помещаю его в событии "Step" - он не рисуется. Если в событии "Draw", то он рисуется но самого объекта тогда не видно.
В итоге по пути перемещается только индикатор жизни, без самого объекта. Подскажите, пожалуйста, как это исправить.
2D NoteWar
|
|
| |
BrightSpot | Дата: Понедельник, 01 Августа 2011, 12:51 | Сообщение # 1924 |
заслуженный участник
Сейчас нет на сайте
| просто в гм есть такая заморочка что при добавлении ф-ции рисования спрайт не рисуется...для таких случаев используют draw_sprite(sprite_index,x,y,-1)
Более мощный компьютер глючит быстрее и точнее.
|
|
| |
valeko | Дата: Понедельник, 01 Августа 2011, 14:55 | Сообщение # 1925 |
частый гость
Сейчас нет на сайте
| Хорошо, спасибо. А можно ли как-то вывести индикатор жизни не используя функции рисования?
Я попробовал вставить в "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
|
|
| |
arthur33 | Дата: Понедельник, 01 Августа 2011, 15:51 | Сообщение # 1926 |
участник
Сейчас нет на сайте
| Можно просто создать новый объект и туда поместить в draw draw_healthbar(10,10,200,12,health,c_gray,c_red,c_red,0,1,1). А не писать это в драве главного герояДобавлено (01.08.2011, 15:51) ---------------------------------------------
Quote (valeko) А при использовании draw_sprite(sprite0,x,y,-1) тоже возникает странная ситуация. А что за странная ситуация?
- Опыт - это то, что получаешь, не получив того, чего хотел. Новая головоломка
|
|
| |
BrightSpot | Дата: Понедельник, 01 Августа 2011, 16:19 | Сообщение # 1927 |
заслуженный участник
Сейчас нет на сайте
| Quote (valeko) А при использовании draw_sprite(sprite0,x,y,-1) тоже возникает странная ситуация. я не имел дел с путями но что бы рисовать "крутящийся спрайт используй draw_sprite_ext(sprite_index,-1,x,y,1,1,rot,c_white,1) rot-поворот спрайта...Добавлено (01.08.2011, 16:19) --------------------------------------------- кста что бы без ф-ции рисования зделать индикатор жизней создай спрайт в 1 пиксель, создай объект с этим спрайтом, в степе пиши image_xscale=obj.Health;image_yscale=10 obj.Health - это обьект у которого стоит переменная жизней и название переменной... 10 - это толщина линии=))
конечно это извращение так делать HB но кто его знает...
Более мощный компьютер глючит быстрее и точнее.
|
|
| |
valeko | Дата: Понедельник, 01 Августа 2011, 18:49 | Сообщение # 1928 |
частый гость
Сейчас нет на сайте
| 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
|
|
| |
SalahAdDin | Дата: Понедельник, 01 Августа 2011, 18:55 | Сообщение # 1929 |
постоянный участник
Сейчас нет на сайте
| Quote (valeko) А каким образом он определит какой health показывать. Quote (valeko) draw_healthbar(10,10,200,12,'id образца'.health,c_gray,c_red,c_red,0,1,1).
Фотошоп это не сложно. Немного теории, полезной на практике: Работа с наложением текстур Рисуем без планшета
Сообщение отредактировал SalahAdDin - Понедельник, 01 Августа 2011, 18:55 |
|
| |
Лер_да_Рим | Дата: Понедельник, 01 Августа 2011, 19:24 | Сообщение # 1930 |
заслуженный участник
Сейчас нет на сайте
| Quote (valeko) А каким образом он определит какой health показывать. Т.е. если у меня несколько однотипных врагов, над каждым полоска жизни. Когда рисование жизни вложено в сам персонаж, то я понимаю, как это работает. А если жизнь рисуется отдельным объектом - как установить эту связь? health только один - для персонажа. Для врагов вводи локальную переменную и всё будет норм.
Дамы и господа, я представляю вам человека, которому н-а-с-р-а-т-ь! (с) Доктор Кокс.
|
|
| |
arthur33 | Дата: Понедельник, 01 Августа 2011, 20:19 | Сообщение # 1931 |
участник
Сейчас нет на сайте
| Будут вопросы обращайся, поможем.
- Опыт - это то, что получаешь, не получив того, чего хотел. Новая головоломка
|
|
| |
valeko | Дата: Понедельник, 01 Августа 2011, 21:16 | Сообщение # 1932 |
частый гость
Сейчас нет на сайте
| Я пытаюсь сделать игру типа "Защита башни"
Я, наверное, совсем тупые вопросы задаю...
Хорошо, оставим health в покое. Попробую еще раз вопрос сформулировать.
Допустим, у меня есть пачка врагов. Они каким-нибудь генератором создаются, каждый с рандомным здоровьем. Над каждым полоска этого здоровья. На старте - полоска здоровья одинакового размера у всех, независимо от того какая цифра за этой полоской скрывается.
Все враги дружной толпой прут по дороге (путь - сложная фигура). При приближении к башне на определенное расстояние, та начинает стрелять. При попадании во врага полоска уменьшается (у каждого врага на свою величину, т.к. стартовое здоровье у всех разное). Если здоровье <= 0, враг уничтожается.
Тут мне все понятно, кроме того, как эту полоску нарисовать. Как получить сами цифры здоровья и урона я понимаю. НО как их вывести на экран в виде полоски - ничего не выходит.
Теперь, наконец-то, сам вопрос:
1. Как вывести эту полоску, не используя событие "Draw"? 2. Если все же только через "Draw", то как сделать, чтобы мой враг правильно двигался по пути, а не просто дергался вверху экрана.
Спасибо, что дочитали до этого места.
2D NoteWar
|
|
| |
SalahAdDin | Дата: Понедельник, 01 Августа 2011, 21:40 | Сообщение # 1933 |
постоянный участник
Сейчас нет на сайте
| Quote (valeko) 1. Как вывести эту полоску, не используя событие "Draw"? Обьектом, спрайт которого будет служить индикатором здоровья. image_xscale для масштабирования спрайта по горизонтали и image_yscale - по вертикали. Но намного более удобно использовать Draw.
Quote (valeko) 2. Если все же только через "Draw", то как сделать, чтобы мой враг правильно двигался по пути, а не просто дергался вверху экрана. Draw не влияет на положение обьекта, но чтобы рисовать его спрайт в правильном месте используй в функции draw_sprite() координаты обьекта.
Фотошоп это не сложно. Немного теории, полезной на практике: Работа с наложением текстур Рисуем без планшета
|
|
| |
valeko | Дата: Вторник, 02 Августа 2011, 01:20 | Сообщение # 1934 |
частый гость
Сейчас нет на сайте
| 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 |
|
| |
GameMix | Дата: Вторник, 02 Августа 2011, 05:20 | Сообщение # 1935 |
старожил
Сейчас нет на сайте
| Quote (valeko) Я думал, что сколько башен не поставлю - все будут стрелять. Но стреляет только первая. Удаляю ее - начинает стрелять вторая. И т.д. Где я туплю? Может быть, переменная shoot меняется во всех экземплярах объекта башни? Попробуй перед переменной shoot и alarm0 без пробела писать id. : Code if (distance_to_object(obj_vrag) < 150) { if id.shoot=1 {instance_create(obj_tower.x,obj_tower.y,obj_bomba) id.shoot = 0 id.alarm[0]=10}}
Steel Standoff - 2D аркада. Мои статьи
|
|
| |
Super-Bosiak | Дата: Вторник, 02 Августа 2011, 07:20 | Сообщение # 1936 |
частый гость
Сейчас нет на сайте
| Ладно, теперь пажаста ответьте ещё на несколько моих нупских вопросов: 1) Как анимацию запустить? И как сделать так, что бы разная анимация воспроизводилась при разных нажатия клавиш? Или допустим если я сталкиваюсь с танком, как воспроизвести анимацию как я туда сажусь? 2) Можно ли как ни будь сделать объект освещения, если в радиусе освещения объект, то его тень падает в другую сторону, как то так... 3) (я знаю как примерно это сделать, но всё же не точно и не полностью) Как сделать разные части тела, но что бы хп у них были общие? 4) Как сделать здания в которые можно входить и при входе не было видно крыши? 5) Как сделать что бы объект работал только при каком либо условии. На пример что бы танк ехал только при условии что с ним столкнулся игрок?(в смысле сел).
Короче ввопросы опять таки нупские, но я буду ждать ответа, так как знаю что тут есть добрые дядьки которые помогут мне в создании игр
Уберите меня от клавиатуры
|
|
| |
SalahAdDin | Дата: Вторник, 02 Августа 2011, 08:28 | Сообщение # 1937 |
постоянный участник
Сейчас нет на сайте
| Quote (valeko) Как заставить объект поворачиваться на нужный угол Я кажется понял почему у тебя такая беда со спрайтом Рисовать нужно не с помощью draw_sprite. Слишком мало настраиваемых аргументов.
Вот это должно сработать лучше. И можно указать вместо image_angle сразу direction если поворот спрайта не определен в другом событии: draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha)
Фотошоп это не сложно. Немного теории, полезной на практике: Работа с наложением текстур Рисуем без планшета
|
|
| |
valeko | Дата: Вторник, 02 Августа 2011, 10:03 | Сообщение # 1938 |
частый гость
Сейчас нет на сайте
| Quote (SalahAdDin) Может быть, переменная shoot меняется во всех экземплярах объекта башни? Попробуй перед переменной shoot и alarm0 без пробела писать id.
Да, ты абсолютно прав, shoot меняется во всех экземплярах объекта башни. Но я думал, что т.к. не объявлял ее глобальной, она автоматически будет локальной для каждой башни.
И, к сожалению, после добавления id ничего не изменилось.
2D NoteWar
|
|
| |
Лер_да_Рим | Дата: Вторник, 02 Августа 2011, 10:34 | Сообщение # 1939 |
заслуженный участник
Сейчас нет на сайте
| Хм, вообще если переменная не глобальна, она обязана быть локальной и меняться у каждого экземпляра отдельно.
Дамы и господа, я представляю вам человека, которому н-а-с-р-а-т-ь! (с) Доктор Кокс.
|
|
| |
SalahAdDin | Дата: Вторник, 02 Августа 2011, 10:42 | Сообщение # 1940 |
постоянный участник
Сейчас нет на сайте
| Quote (valeko) Где я туплю? Quote (valeko) {instance_create(obj_tower.x,obj_tower.y,obj_bomba) Убери указатель obj_tower из координат бомбы, не?
Фотошоп это не сложно. Немного теории, полезной на практике: Работа с наложением текстур Рисуем без планшета
|
|
| |
|