1) Сделать квадратную маску вокруг спрайта игрока 2)При помощи draw: Если игрок идет влево то используется спрайт влево ,а если вправо ,то спрайт вправо. Если нажата клавиша А или D , то активны некие переменные от которых зависит сторона в которую повернут спрайт , а если клавиши отпущены то эти переменные обнуляются , а еще одна не позволяет быть активной другой , в общем есть куча примеров , где это описано , я в этом сам не разбирался еще. 3)Это трудноватый код , там как бы нужно определить перед собой пропасть и перепрыгнуть ее , если она стоит перед ним 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()
4)Это тоже простота: ПКМ: if shoot=1{выстрел shoot=0} if shoot=0 {timer+=1 if timer=90 {shoot=1 timer=0} }
У меня звук выстрела называется "Glock" , как реализовать код с названием, а то я не понял. А вообще, если бы ты добавил все это в мой исходник, и выложил мне, было бы просто, круто!
С ротацией невнимательно прочел. Вот так нужно: if Верхняя_часть.direction>180 and Верхняя_часть.direction<=360{sprite_index=PS}else {sprite_index=PR}
Добавлено (04.08.2013, 00:01) --------------------------------------------- hotkey, это в кнопку мыши запихивается. shoot=1 - значит можно стрелять Если нельзя стрелять , то начинает тикать таймер. Как таймер натикал 90 - снова можно стрелять , и таймер обнулился. Код для выстрела и прочего , прописывается туда , где на писано "выстрел" в коде
С ротацией невнимательно прочел. Вот так нужно: if Верхняя_часть.direction>180 and Верхняя_часть.direction<=360{sprite_index=PS}else {sprite_index=PR}
Как я понял, это нужно кидать в код с Draw у ГГ. http://SSMaker.ru/9a4f428b/ Но, после запуска игры выскакивает вот такая ошибка - http://SSMaker.ru/3e2b016a/
Возможно, надо заменить код немного выше в Draw...
hotkey, это в кнопку мыши запихивается. shoot=1 - значит можно стрелять Если нельзя стрелять , то начинает тикать таймер. Как таймер натикал 90 - снова можно стрелять , и таймер обнулился. Код для выстрела и прочего , прописывается туда , где на писано "выстрел" в коде
http://SSMaker.ru/2881a2e1/ - так? Если да, то у меня ошибка выскакивает. P.S Ссори, за глупые вопросы
Я уже предполагаю какие ошибки ... Названия свои пропиши в спрайт индексе , это спрайты влево и вправо , у меня были PS и PR (я их быстро я у себя скопировал) В настройках поставь все нециализированные переменные на 0 , чтобы ошибка о неизвестных переменных больше не выскакивала .
Я окончательно запутался Может скачаешь мой исходник, и разберешься? И желательно, "впихни" туда, всё что ты объяснил (как бы нагло это не звучало). А уже потом, смотря на твои изменения, я разберусь. Заранее спасибо
Добавлено (04.08.2013, 01:36) --------------------------------------------- И вообще, как там можно сделать новые оружия? Я делал по примеру - http://gcup.ru/publ/kak_sdelat_2d_shuter_v_game_maker/1-1-0-370 И как я понял, больше 1 оружия я не сделаю... Но, если возможно, то объясните как
Добавлено (04.08.2013, 01:47) --------------------------------------------- Krosos, думаю, только ты мне поможешь).
Теперь запутался я Oo Мне похоже теперь тоже нужно будет изучать платформеры.. Самое бесячее там - это гравитация! Чтобы объект не застревал , нужно мучить исходники и смотреть , как она устроенна...
Проблему спрайта я решил:
//Определение направления оружия rotate=point_direction(x,y,mouse_x,mouse_y);
//Игрок повернут направо? if right=true then gun_x=x+3 //Смена положения ружья по X else gun_x=x+1
gun_y=y+0//Смена положения ружья по Y
draw_sprite(sprite_index,image_index,x,y) //Прорисовка игрока
Попробуй покапать этот платформер , а то он у меня тут завалялся. Сайт на котором было полное описание я забыл=( пример.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, спасибо за подробный ответ. Ротация исправилась идеально! Но... Теперь появились какие-то циферки возле курсора - http://SSMaker.ru/aaad5e8f/
Добавлено (04.08.2013, 03:23) --------------------------------------------- Как я понял, проблему с застреванием объекта, придется самому исправлять
Добавлено (04.08.2013, 03:36) --------------------------------------------- На счет оружий... У меня ГГ - просто ноги. А туловище с пистолетом, это спрайт. В игре он используется как Draw (думаю, ты сам видел). Поэтому я и не пойму, как тут заменят спрайт, если будет новое оружие.
Добавлено (04.08.2013, 03:49) --------------------------------------------- "Твой" платформер посмотрел, и попробовал коды блока и объкта в свою игру перенести, и всё равно, тоже самое... Наверное придется, с нуля начать, использую другой исходник/пример
Добавлено (04.08.2013, 03:49) --------------------------------------------- Удивительно, что даже маска не помогает!
Сообщение отредактировал hotkey - Воскресенье, 04 Августа 2013, 03:49
hotkey, а циферки-это градусы , там строка draw_text убери ее и и исчезнут Во всем виновата гравитация , а что с ней делать , знают только другие платформеры , например этот , попробуй его внимательнее изучить.
Цитата (hotkey)
На счет оружий... У меня ГГ - просто ноги. А туловище с пистолетом, это спрайт. В игре он используется как Draw (думаю, ты сам видел). Поэтому я и не пойму, как тут заменят спрайт, если будет новое оружие.
Верхняя часть draw_sprite_ext(player,0,gun_x,gun_y,1,R,rotate,image_blend,image_alpha) - это и есть спрайт оружия
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)
Но, никто не хочет отвечать. Помогаешь, только, ты
Я про тот платформер , который я тебе скинул , в нем должно быть почти все , а остальное уже мелочь
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} И так далее...
Всё равно не могу понять... Допустим спрайт сменится, а как-же "урон", "пули" и т.д? Может скинешь исходник какой?
Пули у тебя создаются этой штукой: 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) --------------------------------------------- Урон уже находится в пуле , она при столкновении наносит вред объекту и исчезает , урон может наноситься и стенам , но им будет пофиг.
Пули у тебя создаются этой штукой: 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) --------------------------------------------- Урон уже находится в пуле , она при столкновении наносит вред объекту и исчезает , урон может наноситься и стенам , но им будет пофиг.
Добавь это, пожалуйста, в мой исходник. Я не разберусь никак
В зависимости какое оружие выбрано , такой объект он и создаст: 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 аркада. Мои статьи
В таком случае лучше использовать switch-case, т.к. оружий в игре будет, скорее всего, больше, чем 2-3. Новичков нужно сразу приучать к правильному написанию кода.
Мне нужно, чтобы скинули исходник с подобным кодом, иначе я не разберусь так
Ну можно и со свитчами , но я вот сделал так: 2 оружия и оба наносят разный урон 2 оружие валяется в блоке впереди и вначале оно неактивно , 1 , 2 менять оружие.
Дальше чтобы добавить новые оружия добавляй Gun[N]=1 N - это номер оружия gunhaveN=1- это наличие оружия N 1.gmk
Ну можно и со свитчами , но я вот сделал так: 2 оружия и оба наносят разный урон 2 оружие валяется в блоке впереди и вначале оно неактивно , 1 , 2 менять оружие.
Дальше чтобы добавить новые оружия добавляй Gun[N]=1 N - это номер оружия gunhaveN=1- это наличие оружия N 1.gmk
Спасибо большое! Не знаю, чтобы делал без тебя. Теперь всё понятно