Воскресенье, 11 Апреля 2021, 22:51

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Записи участника » trespass91 [22]
Результаты поиска
trespass91Дата: Воскресенье, 28 Июня 2020, 10:52 | Сообщение # 1 | Тема: GMS 2 TDS Неправильный полет пули.
был не раз
Сейчас нет на сайте
Цитата MagicHero ()
Цитата trespass91 ()
У меня не отдельный спрайт гусениц.Я анимировал их на спрайте основания танка.

Это плохо в плане оптимизации т.к. идёт бессмысленный расход ресурсов, хотя если делаешь не для телефона или размер картинки маленький как и самих кадров анимации то можно и забить. Хотя все равно в будущем придется разбивать текстуры по текстурным атласам.

Да у меня всего 4 кадра анимации ну или 6.Там максимум полоски передвигаются типа гусеница движется.


Нуб из нубов даже в GML.
trespass91Дата: Воскресенье, 28 Июня 2020, 07:11 | Сообщение # 2 | Тема: GMS 2 TDS Неправильный полет пули.
был не раз
Сейчас нет на сайте
Цитата MagicHero ()
Если используешь физику то по правде сказать я с ней ни разу еще не работал и не знаю что да как там. Я привел пример для обычного движения обьекта по пути, как делал в своей игре.

Физику не использую.

Добавлено (28 Июня 2020, 07:13)
---------------------------------------------

Цитата MagicHero ()
draw_self(); // иначе не будет отображаться основание танка
draw_sprite( имя_спрайта_гусениц, pic_move, x, y );

У меня не отдельный спрайт гусениц.Я анимировал их на спрайте основания танка.


Нуб из нубов даже в GML.
trespass91Дата: Пятница, 26 Июня 2020, 16:08 | Сообщение # 3 | Тема: GMS 2 TDS Неправильный полет пули.
был не раз
Сейчас нет на сайте
MagicHero,да.думаю так будет лучше=)
Сюда ведь еще можно старт и стоп анимации сделать у противника.Гусеницы анимированы.

Добавлено (26 Июня 2020, 16:09)
---------------------------------------------
Ну то есть не сюда,а в объект основание танка противника.

Добавлено (27 Июня 2020, 12:43)
---------------------------------------------

Цитата MagicHero ()
прописать в степе основания танка image_angle = direction

После этого кода противник в волчок превращается и ступорится на месте у стены.Наверное цепляется маской коллизии.


Нуб из нубов даже в GML.
trespass91Дата: Пятница, 26 Июня 2020, 15:51 | Сообщение # 4 | Тема: GMS 2 TDS Неправильный полет пули.
был не раз
Сейчас нет на сайте
Цитата MagicHero ()
Противник же едет по какому то пути, раз он едет а значит нужно просто image_angle основания танка приравнивать к direction, т.е. просто прописать в степе основания танка image_angle = direction. А в башне image_angle = point_direction(x , y , x_координаты_танка_игрока, y_координаты_танка_игрока ); и соответственно создавать пули которыми он стреляет по dir = имя_обьекта_башни_танка_противника.image_angle а далее для выстрела код почти тот же что и у твоего основного танка.

Ага.Примерно понял.Буду заниматься.


Нуб из нубов даже в GML.
trespass91Дата: Пятница, 26 Июня 2020, 15:06 | Сообщение # 5 | Тема: GMS 2 TDS Неправильный полет пули.
был не раз
Сейчас нет на сайте
MagicHero.Благодарю.Сейчас почитаю твой код и внимательно изучу.Насчет направления пули я просто формулировку твою не понял.Оказывается Пулю рисовать в направлении 0.Она собственно и нарисована в ноль сразу.Теперь все спрайты так рисую,чтобы в коде не поворачивать их к 0.

Добавлено (26 Июня 2020, 15:14)
---------------------------------------------
Проверил-Все хорошо работает.Благодарствую.
Теперь я задумался:а не стоило ли мне первый проект попроще взять себе...А то у меня и противник двигает и башней и поворачивается ко мне основанием танка.Правда еще скользит во время движения,если не остановился еще.Думаю придется безбашенных пока делать.Ибо у меня управление танком как у авто,единственное на мете поворачивается и рассчитывается п оформулам синусам-косинусам.Думаю придется брать учебник по тригонометрии,чтобы хоть как-то понимать это.


Нуб из нубов даже в GML.
trespass91Дата: Пятница, 26 Июня 2020, 14:35 | Сообщение # 6 | Тема: GMS 2 TDS Неправильный полет пули.
был не раз
Сейчас нет на сайте
MagicHero, для плавного поворота такой код у меня:
Код
pointdir = point_direction (x, y, mouse_x, mouse_y);//Плавное вращение башни танка.
image_angle += sin(degtorad(pointdir - image_angle)) * aim_speed;

Добавлено (26 Июня 2020, 14:37)
---------------------------------------------

Цитата MagicHero ()
Вдобавок полю нужно правильно нарисовать а именно по направлению direction 0 т.е. горизонтально слева-направо (слева-зад, справа-перед)

Вот эту часть вообще не понял =(


Нуб из нубов даже в GML.
trespass91Дата: Пятница, 26 Июня 2020, 13:48 | Сообщение # 7 | Тема: GMS 2 TDS Неправильный полет пули.
был не раз
Сейчас нет на сайте
Цитата MagicHero ()
dir это direction (угол поворота) спрайта башни твоего танка. Я ее не знаю, но т.к. ты указывал ее я посчитал что dir это переменная угла наклона башни. А так тебе везде надо тогда dir заменить на переменную угла поворота башни танка. Если ее нет, например ты указывал image_angle для башни напрямую то используй вместо dir, имя_обьекта_башни.image_angle Можно записать это так, перед кодом как начнёшь использовать dir:

var dir=

Целиком мой коды выглядит так:
в Step у объекта башни танка
Код
var dir = point_direction(x , y , mouse_x , mouse_y );// -3 выравнивание пули по оси y.
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;
    }
    alarm[0] = room_speed * shoot_delay;
    audio_play_sound(sound_tank_shot, 1, 0);
    }

Добавлено (26 Июня 2020, 13:49)
---------------------------------------------
Но в целом это работает,но не совсем.Пуля позиционируется нормально,до тех пор пока я не наведу на сам танк и не нажму ЛКМ.Пуля летит верно из дула,но при этом спрайт разворачивается в противоположную сторону,то есть летит как бы задом.

Добавлено (26 Июня 2020, 14:03)
---------------------------------------------
Ага.кажись я фиксанул это дело.Теперь работает как надо.
В Create объекта пуля прописал:

Код
image_angle = obj_tank_cannon.image_angle;

Такие дела.Спасибо за советы.


Нуб из нубов даже в GML.
trespass91Дата: Пятница, 26 Июня 2020, 13:42 | Сообщение # 8 | Тема: GMS 2 TDS Неправильный полет пули.
был не раз
Сейчас нет на сайте
Цитата MagicHero ()
dir это direction (угол поворота) спрайта башни твоего танка. Я ее не знаю, но т.к. ты указывал ее я посчитал что dir это переменная угла наклона башни. А так тебе везде надо тогда dir заменить на переменную угла поворота башни танка. Если ее нет, например ты указывал image_angle для башни напрямую то используй вместо dir, имя_обьекта_башни.image_angle Можно записать это так, перед кодом как начнёшь использовать dir:

var dir=

Вас понял.Вроде смотрел и переменная эта была.Буду дальше смотреть.


Нуб из нубов даже в GML.
trespass91Дата: Пятница, 26 Июня 2020, 08:51 | Сообщение # 9 | Тема: GMS 2 TDS Неправильный полет пули.
был не раз
Сейчас нет на сайте
Цитата MagicHero ()
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 чтобы уничтожить пулю за пределами комнаты если она ни в кого не врежется.


Спасибо за помощь и что подробно все расписал.Сейчас все это прпробую проделать и перечитать код несколько раз для понимания.

Добавлено (26 Июня 2020, 09:17)
---------------------------------------------
Эх,вот в этой строке не дает переменную "dir" поставить:
direction=имя_обьекта_башни.dir;
Пишет переменная "dir" использована лишь однажды.Причем если просто после задания этой переменной ниже строкой ее написать,она без проблем определяется.


Нуб из нубов даже в GML.

Сообщение отредактировал trespass91 - Пятница, 26 Июня 2020, 09:23
trespass91Дата: Четверг, 25 Июня 2020, 12:18 | Сообщение # 10 | Тема: [GMS 2]Проблемы со звуком в GMS 2
был не раз
Сейчас нет на сайте
Присоединяюсь к вопросу.

Нуб из нубов даже в GML.
trespass91Дата: Среда, 24 Июня 2020, 23:32 | Сообщение # 11 | Тема: GMS 2 TDS Неправильный полет пули.
был не раз
Сейчас нет на сайте
Ясно,спасибо за наводку.Буду пытаться сделать все это.

Добавлено (25 Июня 2020, 03:52)
---------------------------------------------

Цитата MagicHero ()
У тебя пуля летит по координатам мыши что и приводит к всем проблемам ( полет назад, не из дула) нужно просто в момент нажатия на мышь производить появление объекта пули в конце ствола и движение по прямой с углом на который в момент нажатия было повернуто дуло танка. А если пуля ни во что не врежется то уничтожать ее, как только выйдет за пределы комнаты т.к. иначе она будет лететь бесконечно за пределами вида.


Не подскажешь примерно,где копать?Это связано просто с координатами или тут фигурирует lengthdir и direction,image_angle?


Нуб из нубов даже в GML.
trespass91Дата: Среда, 24 Июня 2020, 14:15 | Сообщение # 12 | Тема: Android SDK является платным или нет?
был не раз
Сейчас нет на сайте
Цитата DeveloperGame ()
Хочу научиться делать игры на GameMaker под Android. Но на одном сайте написали, что модуль Android нужно покупать. Так он платный или нет?

Да.платный.Под него отдельная лицензия покупается,как и под Web приложения.


Нуб из нубов даже в GML.
trespass91Дата: Среда, 24 Июня 2020, 13:44 | Сообщение # 13 | Тема: GMS 2 TDS Неправильный полет пули.
был не раз
Сейчас нет на сайте
Цитата JAMPER ()
trespass91, я предполагаю, что проблема возникает именно в объекте obj_bullet. Какой код отвечает за ее перемещение?


в Create у объекта Bullet:
Код
bullet_speed = 10;
move_towards_point(mouse_x, mouse_y,bullet_speed);
image_angle = direction;


Добавлено (24 Июня 2020, 13:46)
---------------------------------------------
Цитата Supr_maks ()
Можно сделать так чтобы пуля появлялась в центре и двигалась к курсору? Так будет казаться что пуля вылетела из дула и ненужен бессмысленные вычисления которые нагружают твой пк.

Я так делал,но если активно вертеть башней танка,то легко можно увидеть,что пуля идет не из дула а из центра объекта танк.Тем более,если танк в движении находится.Совсем не смотрится это.

Добавлено (24 Июня 2020, 14:52)
---------------------------------------------
Пришла внезапно мысль:наверное можно ограничить мышь,минимальный радиус вокруг игрока указать и максимальный заодно,чтобы нельзя было целиться на весь экран.Надо почитать про это.Полюбому должно помочь.


Нуб из нубов даже в GML.

Сообщение отредактировал trespass91 - Среда, 24 Июня 2020, 13:57
trespass91Дата: Среда, 24 Июня 2020, 12:43 | Сообщение # 14 | Тема: GMS 2 TDS Неправильный полет пули.
был не раз
Сейчас нет на сайте
Привет,форумчане.Есть такой код в Step объекта башни танка:
Код
//Вычисление точки вылета пули из дула
var dir = point_direction(x , y , mouse_x , mouse_y );
var x_offset = lengthdir_x(81, dir);
var y_offset = lengthdir_y(81, dir);

if (mouse_check_button(mb_left))
{
if (canshoot = false)
{
canshoot = true
instance_create_layer(x + x_offset, y + y_offset, "bullets", obj_bullet)
alarm[0] = room_speed * 1;
audio_play_sound(sound_tank_shot, 1, 0);
}
if (mouse_x = obj_tank.x) && (mouse_y = obj_tank.y)
{
canshoot = true;
    
}
}


Тут определяется точка вылета пули из дула и скорострельность.Но если я наведу мышью на танк,пули летят в обратном направлении или летят до курсора мыши и разворачиваются в обратном направлении.Как это исправить можно?Я пытался задать условие,что,когда мышь находится по координатам танка игрока,возвращается вот эта штука canshoot = true;
Но видимо,что-то я делаю не так.


Нуб из нубов даже в GML.
trespass91Дата: Среда, 24 Июня 2020, 01:36 | Сообщение # 15 | Тема: GMS 2 TDS Противник и его основание
был не раз
Сейчас нет на сайте
.

Нуб из нубов даже в GML.

Сообщение отредактировал trespass91 - Среда, 24 Июня 2020, 12:43
trespass91Дата: Вторник, 23 Июня 2020, 11:50 | Сообщение # 16 | Тема: GMS 2 TDS Противник и его основание
был не раз
Сейчас нет на сайте
Здравствуйте снова.Подскажите будет ли просто реализовать такую задумку?
Есть противник,у него есть башня.Я это дело все кое-как не без помощи этого форума прикрутил.Даже через математическую формулу поворот всего этого с разной скоростью к объекту игрок сделал.Но вот одновременно с поворотом к игроку,противник начинает двигаться и соответственно просто скользит вбок,хотя танк так делать не умеет.Получается что у противника танки на воздушных подушках.Можно реализовать стоп объекта,пока он не повернулся к игроку?
Своими силами смог только сделать остановку анимации на определенном растоянии от игрока и ее воспроизведение при приближении на определенное расстояние.
Вот код:
в Step объекта противник(самого основания танка)
Код
pointdir_enemy_cannon = point_direction (x, y, obj_tank.x, obj_tank.y);//Плавный поворот вражеского танка к игроку.
image_angle += cos(degtorad(pointdir_enemy_cannon - image_angle)) * 2;
if distance_to_object(obj_tank) > 250
{
    image_speed = 0;
    
}

if distance_to_object(obj_tank) < 250
{
image_speed = 1;
}


Нуб из нубов даже в GML.

Сообщение отредактировал trespass91 - Среда, 24 Июня 2020, 12:40
trespass91Дата: Понедельник, 22 Июня 2020, 14:57 | Сообщение # 17 | Тема: GMS 2 TDS Противник и его орудие
был не раз
Сейчас нет на сайте
Цитата AlexanderBekker ()
Теперь понял, что ты хочешь сделать. Это делается всё очень просто, как раз работа с ID. Удали весь код из объекта пушки, а в объект танка вставь:
Create:
Код
tower = instance_create(x, y, objTower);

End Step:
Код
tower.x = x;
tower.y = y;
tower.image_angle = point_direction(x, y, objPlayer.x, objPlayer.y);

Instance Destroy:
Код
with tower instance_destroy();


Офигеть.Это заработало.Большущее спасибо тебе за помощь.Пойду почитаю код и попробую его понять.Я с этим день точно бился.Нужно будет конкретно почитать про Events.фуф=)


Нуб из нубов даже в GML.
trespass91Дата: Понедельник, 22 Июня 2020, 14:36 | Сообщение # 18 | Тема: GMS 2 TDS Противник и его орудие
был не раз
Сейчас нет на сайте
Цитата AlexanderBekker ()
А как именно это должно работать? Распиши подробнее и мы подумаем, что можно сделать.

Да достаточно просто по задумке.По сути у игрока есть танк и к нему прикручена башня(вращается на позицию мыши по Х и У).То же самое и у противника сделать хочу.Есть корпус противника и есть башня.Поворот я прописал,чтобы на игрока смотрели.А вот когда двигаться начинают,то делают они это без пушек,пушки стоят на месте и целятся в игрока.как то так =(

Добавлено (22 Июня 2020, 14:40)
---------------------------------------------
Пока что у меня получилось сделать так,чтобы только один противник двигался с пушкой к игроку.
добавив в объект пушки в Begin step:
x = obj_enemy.x;
y = obj_enemy.y;

Как убиваю этого с пушкой,она сразу же отрисовывается на следующем противнике.Но не вместе.
Я слышал есть така штука как ID.Может ее стоит как то применить?


Нуб из нубов даже в GML.
trespass91Дата: Понедельник, 22 Июня 2020, 14:19 | Сообщение # 19 | Тема: GMS 2 TDS Противник и его орудие
был не раз
Сейчас нет на сайте
Цитата AlexanderBekker ()
Solid у меня только у стен стоит.Остальные объекты без него и физика ни у кого не включена.хм...

Код
mp_potential_step(obj_tank.x, obj_tank.y, move_enemy_speed, 1);

Попробуй тогда вместо 1 поставить 0.

Помогло.А я даже и не подумал об этом параметре.0 - это же я так понимаю избегать всех объектов,а не только Solid.
Но теперь башни противников продолжают смотреть за игроком и стоять при этом на месте,а сами противники следуют за мной.Мне кажется здесь нужно Draw задействовать ли нет?


Нуб из нубов даже в GML.

Сообщение отредактировал trespass91 - Понедельник, 22 Июня 2020, 14:25
trespass91Дата: Понедельник, 22 Июня 2020, 13:47 | Сообщение # 20 | Тема: GMS 2 TDS Противник и его орудие
был не раз
Сейчас нет на сайте
Цитата AlexanderBekker ()
А насчет того,что после прикручивания башни к противнику у них пропадает желание двигаться ко мне,это можн окак-то решить?

Объект башни может преграждать путь противников, если он твёрдый. Посмотри, стоит ли галочка напротив параметра Solid, и если да, то убери её.

Solid у меня только у стен стоит.Остальные объекты без него и физика ни у кого не включена.хм...

Добавлено (22 Июня 2020, 13:58)
---------------------------------------------

Цитата AlexanderBekker ()
Событие Instance Destroy танка:
Код
with tower instance_destroy();

Написал этот код в Step объекта противника.Не заработало.
Создал событие при столкновении с пулей игрока и туда написал:
Код
instance_destroy();//Уничтожение противника вместе с пушкой.
with tower instance_destroy();

И оно как-то заработало.Хоть и выглядит,как мне кажется,не корректно.


Нуб из нубов даже в GML.
Форум игроделов » Записи участника » trespass91 [22]
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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