Суббота, 30 Ноября 2024, 04:58

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Много вопросов по поводу Game Maker! №2
hotkeyДата: Суббота, 03 Августа 2013, 20:00 | Сообщение # 1
частый гость
Сейчас нет на сайте
После предыдущей темы, решил создать игру с нуля. И, снова, возникли вопросы:

1) Как сделать так, чтобы ГГ и моб, не застревали в блоках

2) Как сделать бота умнее, т.е он должен предследовать меня, перепрыгивая блоки и т.д?

3) Как ограничить выстрел, т.е после выстрела, должно пройти 2-3 сек, чтобы можно было выстрелить еще раз?

Для начала, хватит. Остальные задам в комментариях, позже.
P.S поиском/гуглом уже пользовался, не помогло.

Заранее спасибо за ответы. happy
Вот ссылка на исходник - http://files.mail.ru/8462C1F5AD2044BD9A00E9640E99E999


Сообщение отредактировал hotkey - Понедельник, 05 Августа 2013, 01:19
KrososДата: Суббота, 03 Августа 2013, 23:53 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
1) Сделать квадратную маску вокруг спрайта игрока
2)При помощи draw:
Если игрок идет влево то используется спрайт влево ,а если вправо ,то спрайт вправо.
Если нажата клавиша А или D , то активны некие переменные от которых зависит сторона в которую повернут спрайт , а если клавиши отпущены то эти переменные обнуляются , а еще одна не позволяет быть активной другой , в общем есть куча примеров , где это описано , я в этом сам не разбирался еще.
3)Это трудноватый код , там как бы нужно определить перед собой пропасть и перепрыгнуть ее , если она стоит перед ним wacko Oo
Или просто сделать пути и не ломать мозги.
Типо если перед мобом пропасть , то он берет и при помощи пути ее перепрыгивает нафиг...
Нужна сетка , созданная заранее:
mp_grid_create(left,top,hcells,vcells,cellwidth,cellheight)
И пустой путь созданный заранее.
потом проверяем возможность пути
if mp_grid_path(id,path,xstart,ystart,xgoal,ygoal,allowdiag)=1 {path_start(path,speed,endaction,absolute) и делаем его}
А также перед мобом должна стоять запрещенная зона , через которую он прыгает
mp_grid_add_rectangle(id,left,top,right,bottom)

Где-то валялся пример на форуме...
4)Это тоже простота:
ПКМ:
if shoot=1{выстрел
shoot=0}
if shoot=0 {timer+=1
if timer=90 {shoot=1 timer=0}
}

Добавлено (03.08.2013, 23:53)
---------------------------------------------
А нет , пути моб должен лепить сам и для себя!
PathMob=path_create()





Мой проект


Сообщение отредактировал Krosos - Суббота, 03 Августа 2013, 23:54
hotkeyДата: Суббота, 03 Августа 2013, 23:57 | Сообщение # 3
частый гость
Сейчас нет на сайте
Цитата (Krosos)
4)Это тоже простота:
ПКМ:
if shoot=1{выстрел
shoot=0}
if shoot=0 {timer+=1
if timer=90 {shoot=1 timer=0}
}

У меня звук выстрела называется "Glock" , как реализовать код с названием, а то я не понял. wacko А вообще, если бы ты добавил все это в мой исходник, и выложил мне, было бы просто, круто! biggrin
KrososДата: Воскресенье, 04 Августа 2013, 00:01 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
С ротацией невнимательно прочел.
Вот так нужно:
if Верхняя_часть.direction>180 and Верхняя_часть.direction<=360{sprite_index=PS}else
{sprite_index=PR}

Добавлено (04.08.2013, 00:01)
---------------------------------------------
hotkey, это в кнопку мыши запихивается.
shoot=1 - значит можно стрелять
Если нельзя стрелять , то начинает тикать таймер.
Как таймер натикал 90 - снова можно стрелять , и таймер обнулился.
Код для выстрела и прочего , прописывается туда , где на писано "выстрел" в коде





Мой проект


Сообщение отредактировал Krosos - Воскресенье, 04 Августа 2013, 00:03
hotkeyДата: Воскресенье, 04 Августа 2013, 00:13 | Сообщение # 5
частый гость
Сейчас нет на сайте
Цитата (Krosos)
С ротацией невнимательно прочел.
Вот так нужно:
if Верхняя_часть.direction>180 and Верхняя_часть.direction<=360{sprite_index=PS}else
{sprite_index=PR}

Как я понял, это нужно кидать в код с Draw у ГГ. http://SSMaker.ru/9a4f428b/
Но, после запуска игры выскакивает вот такая ошибка - http://SSMaker.ru/3e2b016a/

Возможно, надо заменить код немного выше в Draw...

Добавлено (04.08.2013, 00:13)
---------------------------------------------

Цитата (Krosos)
hotkey, это в кнопку мыши запихивается.
shoot=1 - значит можно стрелять
Если нельзя стрелять , то начинает тикать таймер.
Как таймер натикал 90 - снова можно стрелять , и таймер обнулился.
Код для выстрела и прочего , прописывается туда , где на писано "выстрел" в коде

http://SSMaker.ru/2881a2e1/ - так? Если да, то у меня ошибка выскакивает.
P.S Ссори, за глупые вопросы sad
KrososДата: Воскресенье, 04 Августа 2013, 00:17 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Я уже предполагаю какие ошибки ...
Названия свои пропиши в спрайт индексе , это спрайты влево и вправо , у меня были PS и PR (я их быстро я у себя скопировал)
В настройках поставь все нециализированные переменные на 0 , чтобы ошибка о неизвестных переменных больше не выскакивала .





Мой проект


Сообщение отредактировал Krosos - Воскресенье, 04 Августа 2013, 00:20
hotkeyДата: Воскресенье, 04 Августа 2013, 01:47 | Сообщение # 7
частый гость
Сейчас нет на сайте
Я окончательно запутался cry
Может скачаешь мой исходник, и разберешься? И желательно, "впихни" туда, всё что ты объяснил (как бы нагло это не звучало). А уже потом, смотря на твои изменения, я разберусь. Заранее спасибо smile

Добавлено (04.08.2013, 01:36)
---------------------------------------------
И вообще, как там можно сделать новые оружия? Я делал по примеру - http://gcup.ru/publ/kak_sdelat_2d_shuter_v_game_maker/1-1-0-370
И как я понял, больше 1 оружия я не сделаю... Но, если возможно, то объясните как help

Добавлено (04.08.2013, 01:47)
---------------------------------------------
Krosos, думаю, только ты мне поможешь).

KrososДата: Воскресенье, 04 Августа 2013, 02:16 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Теперь запутался я Oo
Мне похоже теперь тоже нужно будет изучать платформеры..
Самое бесячее там - это гравитация!
Чтобы объект не застревал , нужно мучить исходники и смотреть , как она устроенна...

Проблему спрайта я решил:


Попробуй покапать этот платформер , а то он у меня тут завалялся.
Сайт на котором было полное описание я забыл=(
пример.gmk

Добавлено (04.08.2013, 02:05)
---------------------------------------------
Смену оружия - это самое простейшее , когда поймешь - также скажешь.

Добавлено (04.08.2013, 02:16)
---------------------------------------------
Смена оружия идет примерно так:

Gun[1]=1
Gun[2]=1
Gun[3]=1
Gun=....
Draw:
if Gun[1]=1 {draw_sprite(Спрайт игрока с этим оружием)}
if Gun[2]=1 {draw_sprite(Спрайт игрока с этим оружием)}
if Gun[3]=1 {draw_sprite(Спрайт игрока с этим оружием)}
пкм;
if Gun[1]=1 {instance_create(Рокету например) , а дальше перерыв}
if Gun[2]=1 {instance_create(Пули например) , а дальше перерыв}
if Gun[3]=1 {instance_create(Стрелы например) , а дальше перерыв}

Смена оружия:
Цифра 1
if gunhave1=1 {Если есть 1 оружие}
for (O=0 ;0<10; O+1{Gun[O]=0}// Снять любое оружие из 10!
Gun[1]=1 взять 1 оружие
}
Цифра 2
if gunhave2=1 {Если есть 2 оружие}
for (O=0 ;0<10; O+1{Gun[O]=0}// Снять любое оружие из 10!
Gun[2]=1 взять 2 оружие
}

Ну а если подбираем оружие:
with player {gunhave1=1} Можно брать 1 оружие





Мой проект


Сообщение отредактировал Krosos - Воскресенье, 04 Августа 2013, 02:16
hotkeyДата: Воскресенье, 04 Августа 2013, 03:49 | Сообщение # 9
частый гость
Сейчас нет на сайте
Krosos, спасибо за подробный ответ. Ротация исправилась идеально! Но... Теперь появились какие-то циферки возле курсора - http://SSMaker.ru/aaad5e8f/

Добавлено (04.08.2013, 03:23)
---------------------------------------------
Как я понял, проблему с застреванием объекта, придется самому исправлять sad

Добавлено (04.08.2013, 03:36)
---------------------------------------------
На счет оружий... У меня ГГ - просто ноги. А туловище с пистолетом, это спрайт. В игре он используется как Draw (думаю, ты сам видел). Поэтому я и не пойму, как тут заменят спрайт, если будет новое оружие.

Добавлено (04.08.2013, 03:49)
---------------------------------------------
"Твой" платформер посмотрел, и попробовал коды блока и объкта в свою игру перенести, и всё равно, тоже самое... Наверное придется, с нуля начать, использую другой исходник/пример weep

Добавлено (04.08.2013, 03:49)
---------------------------------------------
Удивительно, что даже маска не помогает!

Сообщение отредактировал hotkey - Воскресенье, 04 Августа 2013, 03:49
KrososДата: Воскресенье, 04 Августа 2013, 04:11 | Сообщение # 10
постоянный участник
Сейчас нет на сайте
hotkey, а циферки-это градусы , там строка draw_text убери ее и и исчезнут
Во всем виновата гравитация , а что с ней делать , знают только другие платформеры , например этот , попробуй его внимательнее изучить.
Цитата (hotkey)
На счет оружий... У меня ГГ - просто ноги. А туловище с пистолетом, это спрайт. В игре он используется как Draw (думаю, ты сам видел). Поэтому я и не пойму, как тут заменят спрайт, если будет новое оружие.

Верхняя часть draw_sprite_ext(player,0,gun_x,gun_y,1,R,rotate,image_blend,image_alpha) - это и есть спрайт оружия





Мой проект


Сообщение отредактировал Krosos - Воскресенье, 04 Августа 2013, 05:20
hotkeyДата: Воскресенье, 04 Августа 2013, 16:39 | Сообщение # 11
частый гость
Сейчас нет на сайте
Цитата (Krosos)
Во всем виновата гравитация , а что с ней делать , знают только другие платформеры

Но, никто не хочет отвечать. Помогаешь, только, ты smile

Добавлено (04.08.2013, 16:39)
---------------------------------------------

Цитата (Krosos)
Верхняя часть draw_sprite_ext(player,0,gun_x,gun_y,1,R,rotate,image_blend,image_alpha) - это и есть спрайт оружия

Цитата (Krosos)
Верхняя часть draw_sprite_ext(player,0,gun_x,gun_y,1,R,rotate,image_blend,image_alpha) - это и есть спрайт оружия

Это я понял, но у меня выстел осуществляется из «ног»
KrososДата: Воскресенье, 04 Августа 2013, 18:03 | Сообщение # 12
постоянный участник
Сейчас нет на сайте
hotkey,
draw_sprite_ext(GunPlayer,0,gun_x,gun_y,1,R,rotate,image_blend,image_alpha)
if Gun[1]=1{GunPlayer=Player}
if Gun[2]=1{GunPlayer=Player2}
И так далее...
Цитата (hotkey)
Но, никто не хочет отвечать. Помогаешь, только, ты

Я про тот платформер , который я тебе скинул , в нем должно быть почти все , а остальное уже мелочь





Мой проект


Сообщение отредактировал Krosos - Воскресенье, 04 Августа 2013, 18:05
hotkeyДата: Воскресенье, 04 Августа 2013, 18:47 | Сообщение # 13
частый гость
Сейчас нет на сайте
Цитата (Krosos)
hotkey,
draw_sprite_ext(GunPlayer,0,gun_x,gun_y,1,R,rotate,image_blend,image_alpha)
if Gun[1]=1{GunPlayer=Player}
if Gun[2]=1{GunPlayer=Player2}
И так далее...

Всё равно не могу понять... Допустим спрайт сменится, а как-же "урон", "пули" и т.д? Может скинешь исходник какой? sad
KrososДата: Воскресенье, 04 Августа 2013, 19:17 | Сообщение # 14
постоянный участник
Сейчас нет на сайте
Пули у тебя создаются этой штукой:
Instance create
В зависимости какое оружие выбрано , такой объект он и создаст:
if Gun[1]=1 {instance_create(Рокету например) , а дальше перерыв}
if Gun[2]=1 {instance_create(Пули например) , а дальше перерыв}
if Gun[3]=1 {instance_create(Стрелы например) , а дальше перерыв}

Добавлено (04.08.2013, 19:17)
---------------------------------------------
Урон уже находится в пуле , она при столкновении наносит вред объекту и исчезает , урон может наноситься и стенам , но им будет пофиг.





Мой проект
hotkeyДата: Воскресенье, 04 Августа 2013, 19:26 | Сообщение # 15
частый гость
Сейчас нет на сайте
Цитата (Krosos)
Пули у тебя создаются этой штукой:
Instance create
В зависимости какое оружие выбрано , такой объект он и создаст:
if Gun[1]=1 {instance_create(Рокету например) , а дальше перерыв}
if Gun[2]=1 {instance_create(Пули например) , а дальше перерыв}
if Gun[3]=1 {instance_create(Стрелы например) , а дальше перерыв}
Добавлено (04.08.2013, 19:17)
---------------------------------------------
Урон уже находится в пуле , она при столкновении наносит вред объекту и исчезает , урон может наноситься и стенам , но им будет пофиг.

Добавь это, пожалуйста, в мой исходник. Я не разберусь никак cry
GameMixДата: Воскресенье, 04 Августа 2013, 19:32 | Сообщение # 16
старожил
Сейчас нет на сайте
Цитата (Krosos)
В зависимости какое оружие выбрано , такой объект он и создаст:
if Gun[1]=1 {instance_create(Рокету например) , а дальше перерыв}
if Gun[2]=1 {instance_create(Пули например) , а дальше перерыв}
if Gun[3]=1 {instance_create(Стрелы например) , а дальше перерыв}

В таком случае лучше использовать switch-case, т.к. оружий в игре будет, скорее всего, больше, чем 2-3. Новичков нужно сразу приучать к правильному написанию кода.


Steel Standoff - 2D аркада.
Мои статьи
hotkeyДата: Воскресенье, 04 Августа 2013, 19:35 | Сообщение # 17
частый гость
Сейчас нет на сайте
Цитата (GameMix)
В таком случае лучше использовать switch-case, т.к. оружий в игре будет, скорее всего, больше, чем 2-3. Новичков нужно сразу приучать к правильному написанию кода.

Мне нужно, чтобы скинули исходник с подобным кодом, иначе я не разберусь так weep
KrososДата: Воскресенье, 04 Августа 2013, 20:06 | Сообщение # 18
постоянный участник
Сейчас нет на сайте
Ну можно и со свитчами , но я вот сделал так:
2 оружия и оба наносят разный урон
2 оружие валяется в блоке впереди и вначале оно неактивно , 1 , 2 менять оружие.

Дальше чтобы добавить новые оружия добавляй Gun[N]=1
N - это номер оружия
gunhaveN=1- это наличие оружия N
1.gmk





Мой проект
hotkeyДата: Воскресенье, 04 Августа 2013, 20:12 | Сообщение # 19
частый гость
Сейчас нет на сайте
Цитата (Krosos)
Ну можно и со свитчами , но я вот сделал так:
2 оружия и оба наносят разный урон
2 оружие валяется в блоке впереди и вначале оно неактивно , 1 , 2 менять оружие.

Дальше чтобы добавить новые оружия добавляй Gun[N]=1
N - это номер оружия
gunhaveN=1- это наличие оружия N
1.gmk

Спасибо большое! Не знаю, чтобы делал без тебя. Теперь всё понятно happy
KrososДата: Воскресенье, 04 Августа 2013, 20:15 | Сообщение # 20
постоянный участник
Сейчас нет на сайте
Пфу , точно , можно же было написать:
if havegun1=1{Gun=1}
if havegun2=1{Gun=2}

а в стрельбе:
swith Gun
case: 1 Пуля break
case: 2 Рокета break

В принципе разницы нету , но 2 с способ был бы поменьше в объеме.





Мой проект
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:

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