Результаты поиска
| |
MagicHero | Дата: Понедельник, 20 Июля 2020, 10:03 | Сообщение # 301 | Тема: Не отображается Health бар скелета |
постоянный участник
Сейчас нет на сайте
| По поводу Healthbar то если в будущем начнешь оптимизировать игру то советую отказаться от этой функции т.к. эта отрисовка увеличивает свопы текстурных страниц. Лучше сразу рисуй хелбар через draw текстурой которая находится на той же текстурной странице что и текстуры скелета. draw_sprite_ext(s_health_line,0,x,y,health,1,0,-1,1); где s_health_line - текстура линии здоровья а health - количество здоровья но в отличие от фукции а Healthbar это значение не от 0 до 100 а от 0 до 1 т.е. нужно делить еще на 100 и лучше через round ограничить значение знаков после запятой на 2 т.е. чтобы значение было типа 0.15 а не 0.1534738475.
Для контроля количества отрисовок и вообще как игра использует железо нужно прописать show_debug_overlay(true); где вверху будут отображаться цифры текстуртных свопов и вершинных пакетов. Это значение должно быть как можно меньше. Например у меня в игре много текстур, их размер порядка 70мб (после ужимания непосредственно в самом кеше, размер становится около 40мб) а количество текстурных страниц 25 (размер 2048х2048) и забиты порой до предела чтобы минимизировать их количество. В игре же значение show_debug_overlay показывает в пределах 10/12 до 20/22 но обычно держится в районе 14/16. При этом стоит учесть что вызов таких функций как draw_set_font(); draw_set_colour(); также увеличивают значения и нужно стараться их выполнять за раз в одном месте.
Сообщение отредактировал MagicHero - Понедельник, 20 Июля 2020, 10:09 |
|
| |
MagicHero | Дата: Суббота, 18 Июля 2020, 00:34 | Сообщение # 302 | Тема: Скелет не смотрит в сторону игрока |
постоянный участник
Сейчас нет на сайте
| Direction используется для направления движения, для поворота спрайта нужно использовать image_angle.
|
|
| |
MagicHero | Дата: Пятница, 10 Июля 2020, 13:58 | Сообщение # 303 | Тема: Space Cobra RetPixMod |
постоянный участник
Сейчас нет на сайте
| Цитата TLT (  ) Аналогия с Kage/Ninja Shadow под NES, уровень 1-3 на вращающихся колёсах. Там есть металлические противники, при попадании патронов в них происходит аналогичный отскок. Я имел ввиду что игрок постоянно отпрыгивает от снарядов противника в сторону и при этом камера моментально меняет ракурс что дико напрягает глаза, так ещё и противника теряешь из виду. Бой с боссом на 2м уровне мне было невозможно смотреть из за постоянной смены камеры и дергающегося туда сюда игрока. Нужно как минимум сделать плавную смену камеры и убрать эти конвульсии игрока, когда он уворачивается от снарядов.
Насчёт прыжка девушки то прыжок на месте выглядит ужасно, как будто доской играешь. Прыжок с подогнутыми ногами выглядел бы куда лучше. Как и прыжок в длину с расставленными на пол экрана ногами, тут опять же нужна какая то группировка или кувырок. Возьми за основу движения в том же мортал комбате или стрит файтере, ничего придумывать и не надо.
Сообщение отредактировал MagicHero - Пятница, 10 Июля 2020, 13:59 |
|
| |
MagicHero | Дата: Четверг, 09 Июля 2020, 18:16 | Сообщение # 304 | Тема: Space Cobra RetPixMod |
постоянный участник
Сейчас нет на сайте
| Рисовка, особенно картинки в катсценах отличные но боевка ужасная, особенно битва с боссом на 2 уровне. Эти постоянные отскоки в сторону от снарядов смотрятся просто ужасно,. Тут надо сделать какой то специальный отскок без СМЕНЫ камеры в обратном направлении (эта смена камеры просто дико перегружает глаза) или блок для отражения снарядов. Прыжки девушки, особенно на месте, тоже выглядят топорно. Сделай что-ли чтобы ноги в прыжке хотя бы подгибала.
|
|
| |
MagicHero | Дата: Вторник, 30 Июня 2020, 16:21 | Сообщение # 305 | Тема: помогите написать код |
постоянный участник
Сейчас нет на сайте
| Цитата DivES (  ) Описывать каждую яму по отдельности — утомительно.
Каждую яму описывать не надо, я же написал что в функции пишешь имя_обьекта_ямы. Я надеюсь автор вопроса для всех ям использует один объект а не разные. Если по мимо ям есть ещё объекты которые отнимают ключи когда попадаешь в них то надо создать родительский объект (можно полностью пустой) и прикрепить к нему всё что отнимает ключи а его название указать в функции place_meeting.
Цитата DivES (  ) К тому же place_meeting(...) звучит как функция проверки столкновения с местом, а не с объектом. Поищи в сторону функции столкновения с объектом, тогда обойдёшься строчкой кода.
place_meeting как раз и проверяет маски коллизии игрока и обьекта яма по текущим координатам игрока, там же написаны x и y координаты игрока. Можно наоборот добавлять к координатам значения чтобы проверять перед игроком или как душе захочется.
Сообщение отредактировал MagicHero - Вторник, 30 Июня 2020, 16:30 |
|
| |
MagicHero | Дата: Понедельник, 29 Июня 2020, 19:34 | Сообщение # 306 | Тема: помогите написать код |
постоянный участник
Сейчас нет на сайте
| Тебе же выше уже писали как сделать. Напишу тогда код, но скажу сразу что изучай gms2 а то так ты ничего сделать не сможешь. в create игрока напиши
В step твоего игрока напиши
Код if place_meeting(x,y,имя_обьекта_ямы) // если обьект ямы имеет не один вид то пиши имя родительского объекта к которому прикрепи все типы ям, ловушек и т.д. все что отнимает ключи. { if check_grid=true // если игрок попал в яму и до этого не находился в яме { // код для отнимания ключей } check_grid=false; // меняем переменную чтобы больше не прогонять код отнимания ключей т.к. игрок уже в яме } else { check_grid=true; // как только игрок выйдет из ямы, меняем переменную чтобы при следующем попадании в яму опять один раз сработал код для отнимания ключей. Кстати тут же можно без проблем реализовать бессмертие если check_grid всегда будет false. }
Сообщение отредактировал MagicHero - Понедельник, 29 Июня 2020, 22:53 |
|
| |
MagicHero | Дата: Воскресенье, 28 Июня 2020, 09:18 | Сообщение # 307 | Тема: GMS 2 TDS Неправильный полет пули. |
постоянный участник
Сейчас нет на сайте
| Цитата trespass91 (  ) У меня не отдельный спрайт гусениц.Я анимировал их на спрайте основания танка. Это плохо в плане оптимизации т.к. идёт бессмысленный расход ресурсов, хотя если делаешь не для телефона или размер картинки маленький как и самих кадров анимации то можно и забить. Хотя все равно в будущем придется разбивать текстуры по текстурным атласам.
|
|
| |
MagicHero | Дата: Суббота, 27 Июня 2020, 16:46 | Сообщение # 308 | Тема: Помогите с ошибкой Game maker studio 2 |
постоянный участник
Сейчас нет на сайте
| zero112, Мой первый ответ был верным так сказать
|
|
| |
MagicHero | Дата: Суббота, 27 Июня 2020, 16:42 | Сообщение # 309 | Тема: GMS 2 TDS Неправильный полет пули. |
постоянный участник
Сейчас нет на сайте
| Цитата trespass91 (  ) Сюда ведь еще можно старт и стоп анимации сделать у противника.Гусеницы анимированы. Ну то есть не сюда,а в объект основание танка противника.
Анимация делается просто, если есть движение (move=true;) то прибавляешь к кадру спрайта какое то число, например так:
Код // в step пишешь
if move = true { // можно просто писать if move { pic_move += 0.5 * speed; // 0.5 взято от болды, тебе нужно самому проверить сколько кадров анимации нужно показывать при скорости 1 чтобы не было так что танк летит а гусеницы еле крутятся или наоборот. speed - скорость танка, чтобы подстроить скорость анимации под его скорость движения. if pic_move >= 10 { pic_move = 0; } // 10 это я от болды взял количество кадров анимации и суть если значение будет выше то надо начинать опять с первого кадра. В GMS2 нумерация кадров идет с 0 т.е. если 9 кадров то от 0 до 8. }
// в draw пишешь
draw_self(); // иначе не будет отображаться основание танка draw_sprite( имя_спрайта_гусениц, pic_move, x, y );
Цитата trespass91 (  ) После этого кода противник в волчок превращается и ступорится на месте у стены.Наверное цепляется маской коллизии. Если используешь физику то по правде сказать я с ней ни разу еще не работал и не знаю что да как там. Я привел пример для обычного движения обьекта по пути, как делал в своей игре.
Сообщение отредактировал MagicHero - Суббота, 27 Июня 2020, 16:44 |
|
| |
MagicHero | Дата: Пятница, 26 Июня 2020, 15:58 | Сообщение # 310 | Тема: GMS 2 TDS Неправильный полет пули. |
постоянный участник
Сейчас нет на сайте
| Я там немного дополнил ответ выше.
|
|
| |
MagicHero | Дата: Пятница, 26 Июня 2020, 15:39 | Сообщение # 311 | Тема: GMS 2 TDS Неправильный полет пули. |
постоянный участник
Сейчас нет на сайте
| Противник же едет по какому то пути, раз он едет а значит нужно просто image_angle основания танка приравнивать к direction, т.е. просто прописать в степе основания танка image_angle = direction. А в башне image_angle = point_direction(x , y , x_координаты_танка_игрока, y_координаты_танка_игрока ); и соответственно создавать пули которыми он стреляет по dir = имя_обьекта_башни_танка_противника.image_angle а далее для выстрела код почти тот же что и у твоего основного танка. А чтобы противник за километр не крутил башней на танк игрока сделать проверку на расстояние до игрока, прописать в степе башни танка противника:
Код if distance_to_object(обьект_основания_игрока) < range { image_angle = point_direction(x , y , x_координаты_танка_игрока, y_координаты_танка_игрока ); } } else { код выравнивания угла поворота башни к углу поворота основания танка }
где range расстояние до игрока при котором противник начнет реагировать
Хотя так башня будет моментально поворачиваться и лучше сделать код на плавный поворот к игроку.
Сообщение отредактировал MagicHero - Пятница, 26 Июня 2020, 16:02 |
|
| |
MagicHero | Дата: Пятница, 26 Июня 2020, 15:00 | Сообщение # 312 | Тема: GMS 2 TDS Неправильный полет пули. |
постоянный участник
Сейчас нет на сайте
| Цитата trespass91 (  ) Вот эту часть вообще не понял =( Нарисована должна вот так https://www.google.ru/url?sa=i&rct=j&q=&esrc=s&source=imgres&cd=&cad=rja&uact=8&ved=2ahUKEwjfrsHstZ_qAhVU6qYKHbxSAzIQjRx6BAgBEAQ&url=https%3A%2F%2Fwww.hotpng.com%2Ffree-png-clipart-ezmgt&psig=AOvVaw17dr5R1aF23mCTRRRoO-dL&ust=1593258843272431 взял пример с гильзой чтобы было точно понятно направление.
Цитата MagicHero (  ) для плавного поворота такой код у меня:
pointdir = point_direction (x, y, mouse_x, mouse_y);//Плавное вращение башни танка. image_angle += sin(degtorad(pointdir - image_angle)) * aim_speed;
Если для плавного поворота у тебя есть отдельный код то создание пули неверно что ты написал т.к. при смещение мыши пуля не будет создаваться в дуле пока дуло не остановится по координатам мыши. В общем тебе надо написать так (я там уже добавил код для поворота пули)
Код var dir = obj_tank_cannon.image_angle; // ИЗМЕНИТЬ if (mouse_check_button(mb_left)) { if (canshoot = false) { canshoot = true var x_offset = lengthdir_x(83, dir); var y_offset = lengthdir_y(83, dir); var temp = instance_create_depth(x + x_offset, y + y_offset, 1, obj_bullet); with (temp) { speed = 5; direction = obj_tank_cannon.image_angle; image_angle = obj_tank_cannon.image_angle; // для поворота пули по направлению полета } alarm[0] = room_speed * shoot_delay; audio_play_sound(sound_tank_shot, 1, 0); }
Сообщение отредактировал MagicHero - Пятница, 26 Июня 2020, 15:01 |
|
| |
MagicHero | Дата: Пятница, 26 Июня 2020, 14:14 | Сообщение # 313 | Тема: GMS 2 TDS Неправильный полет пули. |
постоянный участник
Сейчас нет на сайте
| Цитата trespass91 (  ) var dir = point_direction(x , y , mouse_x , mouse_y ); Это ты находишь угол относительно танка(башни) ? т.е. x и y это координаты башни? я не знаю равны ли у тебя координаты основания танка и башни, но если не равны то в коде var dir = point_direction(x , y , mouse_x , mouse_y ); нужно указывать именно координаты башни танка. И согласно ниже коду выходит что башня у тебя поворачивается мгновенно и всегда смотрит туда куда направлена мышь, т.к. ничего для плавного поворота башни к координатам мыши в коде нет.
Цитата trespass91 (  ) var temp = instance_create_depth(x + x_offset, y + y_offset, 1, obj_bullet); x и y как выше писал это должны быть координаты башни танка.
Цитата trespass91 (  ) Пуля летит верно из дула,но при этом спрайт разворачивается в противоположную сторону,то есть летит как бы задом. ты не прописал image_angle в этом коде
{ speed = 5; direction = obj_tank_cannon.image_angle; image_angle = obj_tank_cannon.image_angle; // добавить }
Вдобавок полю нужно правильно нарисовать а именно по направлению direction 0 т.е. горизонтально слева-направо (слева-зад, справа-перед)
Сообщение отредактировал MagicHero - Пятница, 26 Июня 2020, 14:17 |
|
| |
MagicHero | Дата: Пятница, 26 Июня 2020, 13:45 | Сообщение # 314 | Тема: GMS 2 TDS Неправильный полет пули. |
постоянный участник
Сейчас нет на сайте
| Цитата trespass91 (  ) Вас понял.Вроде смотрел и переменная эта была.Буду дальше смотреть.
Я не успел дописать, сохранил т.к. неудобно было писать на планшете, чтобы закончить на компе. Выше посмотри там дописал текст )
|
|
| |
MagicHero | Дата: Пятница, 26 Июня 2020, 13:31 | Сообщение # 315 | Тема: GMS 2 TDS Неправильный полет пули. |
постоянный участник
Сейчас нет на сайте
| dir это direction (угол поворота) спрайта башни твоего танка. Я ее не знаю, но т.к. ты указывал ее я посчитал что dir это переменная угла наклона башни. А так тебе везде надо тогда dir заменить на переменную угла поворота башни танка. Если ее нет, например ты указывал image_angle для башни напрямую то используй вместо dir, имя_обьекта_башни.image_angle Можно записать это так, перед кодом как начнёшь использовать dir:
Код var dir=имя_обьекта_башни.image_angle; // создаем временную переменную dir которая = углу повората башни танка.
//потом
var x_offset = lengthdir_x(81, dir); var y_offset = lengthdir_y(81, dir);
//Тут пояснение, т.к. выше код необходимо делать именно в коде обьекта башни, т.е. я полагаю что все подготовки для выстрела происходят в коде обьекта башни. Если это не так то надо писать так, добавив текущие координаты башни танка:
var x_offset = имя_обьекта_башни.x+lengthdir_x(81, dir); var y_offset = имя_обьекта_башни.y+lengthdir_y(81, dir);
var temp=instance_create_depth(x_offset,y_offset,depth,obj_bullet); // делаем временный temp, которому присваеваем ID созданного обьекта чтобы можно было передать ему данные with (temp) { // with применяется чтобы код выполнялся непосредственно для прописанного в нем обьекта. speed=10; // скорость полета снаряда direction=имя_обьекта_в_котором_создаем_код.dir; // имя_обьекта_в_котором_создаем_код необходимо т.к. выше применяем with и все переменные указываются для обьекта пуля либо можно заменить на имя_обьекта_башни.image_angle image_angle=direction; // чтобы снаряд был повернут в сторону полета }
Сообщение отредактировал MagicHero - Пятница, 26 Июня 2020, 13:43 |
|
| |
MagicHero | Дата: Четверг, 25 Июня 2020, 19:03 | Сообщение # 316 | Тема: GMS 2 TDS Неправильный полет пули. |
постоянный участник
Сейчас нет на сайте
| var x_offset = lengthdir_x(81, dir); var y_offset = lengthdir_y(81, dir);
Я так понял что у тебя длина пушки 81 (либо ты брал чуть меньше чтобы снаряд вылетал из ствола), dir это угол поворота твоей пушки т.е. direction. Хотя я в своей игре точку на окружности находил так: x_temp=x+radius*dsin(direction); y_temp=y+radius*dcos(direction); Но сути этого не меняет. В общем при нажатие на мышку, создаешь снаряд по координатам
Код var x_offset = lengthdir_x(81, dir); var y_offset = lengthdir_y(81, dir);
где 81 это длина твоего дула а dir это direction (угол наклона) твоего дула.
Код var temp=instance_create_depth(x_offset,y_offset,depth,obj_bullet); // делаем временный temp, которому присваеваем ID созданного обьекта чтобы можно было передать ему данные with (temp) { // with применяется чтобы код выполнялся непосредственно для прописанного в нем обьекта. speed=10; // скорость полета снаряда direction=имя_обьекта_башни.dir; // угол наклона image_angle=direction; // чтобы снаряд был повернут в сторону полета }
И все снаряд сразу же полетит из ствола по направлению в котором был направлен ствол. Ничего лишнего чтобы нагружать систему писать не надо.
depth (глубина) нужно сделать больше чем у дула, чтобы снаряд появился под дулом. obj_bullet так назвал обьект пулю.
В самой пуле не забудь прописать instance_destroy(); в add_event --- Other --- Outside Room чтобы уничтожить пулю за пределами комнаты если она ни в кого не врежется.
Сообщение отредактировал MagicHero - Четверг, 25 Июня 2020, 19:05 |
|
| |
MagicHero | Дата: Среда, 24 Июня 2020, 20:14 | Сообщение # 317 | Тема: GMS 2 TDS Неправильный полет пули. |
постоянный участник
Сейчас нет на сайте
| У тебя пуля летит по координатам мыши что и приводит к всем проблемам ( полет назад, не из дула) нужно просто в момент нажатия на мышь производить появление объекта пули в конце ствола и движение по прямой с углом на который в момент нажатия было повернуто дуло танка. А если пуля ни во что не врежется то уничтожать ее, как только выйдет за пределы комнаты т.к. иначе она будет лететь бесконечно за пределами вида.
Сообщение отредактировал MagicHero - Среда, 24 Июня 2020, 20:17 |
|
| |
MagicHero | Дата: Среда, 24 Июня 2020, 20:06 | Сообщение # 318 | Тема: Android SDK является платным или нет? |
постоянный участник
Сейчас нет на сайте
| Сам gms2 имеет полностью бесплатную версию на которой ты можешь делать проект но с одним условием, ты его не сможешь скомпилировать. Но зато без проблем сможешь запускать и проверять как работает непосредственно в самой программе.
|
|
| |
MagicHero | Дата: Среда, 24 Июня 2020, 00:50 | Сообщение # 319 | Тема: GMS 2 TDS Противник и его основание |
постоянный участник
Сейчас нет на сайте
| По сути нужно проверять что если основание танка ещё не повернулось на угол движения к цели то скорость движения равна нулю.
|
|
| |
MagicHero | Дата: Суббота, 20 Июня 2020, 01:28 | Сообщение # 320 | Тема: помогите написать код |
постоянный участник
Сейчас нет на сайте
| Решается же проблема элементарно, с добавлением одной переменной. Когда персонаж попадает в яму прогоняется код чтобы отнять ключи, с этим как я понял проблем нет. И в этот же момент переменной даёшь значение true. При следующей проверке столкновения с ямой, перед тем как начинать отнимать ключи у тебя будет проверка той самой добавленной переменной и если она true то ничего не отнимает. Как только персонаж выходит из ямы, т.е. пропадает коллизия с ямой, этой переменной присваеваешь значение false. И теперь опять если персонаж попадет в яму у него один раз отнимут ключи а переменной опять присвоится значение true и так по кругу.
|
|
| |
|