Вопрос - Ответ (Game Maker)
| |
mafon2 | Дата: Воскресенье, 19 Июня 2016, 14:30 | Сообщение # 5681 |
был не раз
Сейчас нет на сайте
| Пытаюсь сделать Movable_block (блок, кот. персонаж будет толкать перед собой) – ничего не выходит.
Родительский объект – obj_Block (он сам по себе пустой, просто определяет твердые предметы)
Код в крите
Код gridSize = 32; isMoving = false; moveTimer = 0; moveSpeed = 4; speedX = 0; speedY = 0; (хотелось, чтоб он двигался, как и персонаж, по клеткам)
Код в степе
Код
// Горизонтальные столкновения
if (place_meeting(x + moveSpeed,y, Obj_block)) { isMoving = false; moveTimer = gridSize; speedX = 0; }
if (isMoving == false)
{
// Падение (такой же, как у персонажа, но персонаж не проваливается, а блок, то проваливается, то повисает в moveSpeed от пола)
if (!place_meeting(x,y+moveSpeed,Obj_block)) { isMoving = true; moveTimer = gridSize; speedX = 0; speedY = 1.25*moveSpeed; }
// Вертикальные столкновения
if (place_meeting(x,y + moveSpeed, Obj_block)) { isMoving = true; moveTimer = gridSize; speedY = 0; }
// Движение вправо (простым методом)
if (place_meeting(x-moveSpeed,y,PLAYER_CHAR) && keyboard_check(vk_right)) { x+=moveSpeed; isMoving = true; }
// Движение влево (по клеточкам)
if (place_meeting(x+moveSpeed,y,PLAYER_CHAR) && keyboard_check(vk_left)) { isMoving = true; moveTimer = gridSize; speedX = -moveSpeed; speedY = 0; } }
if (isMoving == true) { x += speedX; y += speedY moveTimer -= moveSpeed; if (moveTimer == 0) {isMoving = false;} }
Я игрался с ним туда-сюда, выходило и неплохо и совсем мрак. Сейчас они похожи на куски масла, которые катятся, пока не упадут и не влипнут намертво в пол. В идеале, хотелось бы, чтобы они двигались по клеточкам, как и персонаж, когда он на них надвигается.
Если убрать из родителей «obj_Block», то он двигается и после падения, но персонаж начинает наслаиваться на него и обгонять, не смотря на одинаковую скорость.
В лучшем моем исполнении они почти всегда (?) приземлялись правильно, но отбегали от персонажа за растояние клетуи. К сожалению, после продолжительных экспериментов, я потерял этот результат. Но он все равно был не идеален.
Сообщение отредактировал mafon2 - Воскресенье, 19 Июня 2016, 15:20 |
|
| |
VelociRaptor | Дата: Понедельник, 20 Июня 2016, 19:17 | Сообщение # 5682 |
был не раз
Сейчас нет на сайте
| Как в Game Maker сделать игру типа CatWar? Может кто-то рассказать?
|
|
| |
Minskii | Дата: Вторник, 21 Июня 2016, 10:58 | Сообщение # 5683 |
участник
Сейчас нет на сайте
| VelociRaptor, 3D игры на game maker получаются не супер. Добавлено (21 июня 2016, 10:58) --------------------------------------------- mafon2, Карочи, Код if place_meeting(x,y-1,o_hero ) то он двигается на клетку вниз
Код if place_meeting(x,y+1,o_hero) то двигается на клетку вверх
Код if place_meeting(x-1,y,o_hero) на клетку вправо
Код if place_meeting(x+1,y,o_hero) на клетку влево Но тут фишка,он чекает именно единицу. Поэтому пиши вместо +1 -1 +gridSize -gridSize
Один терранозавр - это 1024 гиганозавра, или 1048576 меганозавров. Java/Kotlin, C#, C++. Android разработчик. Инженер-программист программного обеспечения информационной безопасности мобильных систем.
|
|
| |
VelociRaptor | Дата: Вторник, 21 Июня 2016, 18:30 | Сообщение # 5684 |
был не раз
Сейчас нет на сайте
| Цитата Minskii ( ) VelociRaptor, 3D игры на game maker получаются не супер. Но зато это самое простое. А 3д - не самый важный атрибут.Добавлено (21 июня 2016, 18:19) --------------------------------------------- Скажите, как сделать конкретно: регистрацию, конструктор кота (можно выбрать цвет и длину шерсти), племена, охоту, патрули, пары и котят, обучение учеников, смену имени (скажем, Орешек - Орехолап - Орехошкур), битвы и т.д. Как все это сделать? Добавлено (21 июня 2016, 18:30) --------------------------------------------- И по теме регистрации, вот пункты: Имя (кошачье): Племя: Окрас: (спойлер, при нажатии открывается мейкер кота) Пол: (кот, кошка) Пароль: Подтвердите пароль:
|
|
| |
MarkB | Дата: Вторник, 21 Июня 2016, 19:11 | Сообщение # 5685 |
был не раз
Сейчас нет на сайте
| Я новичок в ГМе. Пытаюсь сделать прыжок персонажа. С помощью press<key> и добавления кода с увеличением вертикальной скорости. Но он увеличивает скорость при каждом нажатии на клавишу, как сделать так, чтобы персонаж прыгал только раз. Я пытался через проверку условия:
Код if(place_meeting(x,y,objwall)) { vspeed = -15; } чтобы скорость увеличивалась, только если персонаж касается объекта, но это не работает, скорость просто не увеличивается. И еще один вопрос про функцию
Код collision_point(x,y,obj,prec,notme) не совсем понимаю какие значения могут принимать аргументы prec и notme.
|
|
| |
Minskii | Дата: Вторник, 21 Июня 2016, 19:46 | Сообщение # 5686 |
участник
Сейчас нет на сайте
| VelociRaptor,Оу оу!Ты чего?! Game maker далеко не самый лёгкий конструкторЦитата Ternox ( ) Бери GameMaker - огромные возможности, но надо поучится ему. Я сам пока не очень суперски его знаю. Регистрация - не вопрос game maker'a надо знать html,HTML5,PHP Конструктор сделать не сложно если знать программу,и не просто если ты новичёк.
Цитата VelociRaptor ( ) племена, охоту, патрули, пары и котят, обучение учеников, смену имени (скажем, Орешек - Орехолап - Орехошкур), битвы и т.д. Как все это сделать? Ну а это легкодня.Можно сделать и кнопками. В общем,Всё получится
Добавлено (21 июня 2016, 19:43) ---------------------------------------------
Цитата MarkB ( ) Я новичок в ГМе. Пытаюсь сделать прыжок персонажа. С помощью press<key> и добавления кода с увеличением вертикальной скорости. Но он увеличивает скорость при каждом нажатии на клавишу, как сделать так, чтобы персонаж прыгал только раз. Я пытался через проверку условия: Код if(place_meeting(x,y,objwall)) { vspeed = -15; }
чтобы скорость увеличивалась, только если персонаж касается объекта, но это не работает, скорость просто не увеличивается. И еще один вопрос про функцию Код collision_point(x,y,obj,prec,notme)
не совсем понимаю какие значения могут принимать аргументы prec и notme.
Сделай переменную jump,
Код if jump=true { if(place_meeting(x,y,objwall)) { vspeed = -15; jump = false; } } а при падении на землю делаешь коллизию(что бы при столкновении с землёй jump=true)
В create главного героя пиши jump=true
Добавлено (21 июня 2016, 19:45) --------------------------------------------- а код для простого прыжка:
Код if jump=true { vspeed = -15; jump = false; }
Добавлено (21 июня 2016, 19:46) --------------------------------------------- MarkB, жду плюсек в репу)
Один терранозавр - это 1024 гиганозавра, или 1048576 меганозавров. Java/Kotlin, C#, C++. Android разработчик. Инженер-программист программного обеспечения информационной безопасности мобильных систем.
Сообщение отредактировал Minskii - Вторник, 21 Июня 2016, 19:46 |
|
| |
MarkB | Дата: Вторник, 21 Июня 2016, 20:50 | Сообщение # 5687 |
был не раз
Сейчас нет на сайте
| А вот такой еще вопрос. Хочу сделать чтобы персонаж стрелял. Под пулю я создаю отдельный объект. Затем в объекте персонажа на кнопку создаю действие создания объекта пули с координатами персонажа. В объекте пули я прописываю в событии Step след. код:
Код motion_set(objPlayer.direction,20); Пуля летит в направлении персонажа всегда. Стоит прыгнуть и пуля тоже поднимается. как задать ей независимую траекторию. И еще, как сделать так, чтобы спрайт персонажа поворачивался, я понял. Вот теперь бы понять как сделать так, чтобы пуля летела в ту сторону куда смотрит персонаж.
Разобрался.
Сообщение отредактировал MarkB - Вторник, 21 Июня 2016, 21:05 |
|
| |
VelociRaptor | Дата: Среда, 22 Июня 2016, 08:29 | Сообщение # 5688 |
был не раз
Сейчас нет на сайте
| Цитата Minskii ( ) VelociRaptor,Оу оу!Ты чего?! Game maker далеко не самый лёгкий конструктор Цитата Ternox () Бери GameMaker - огромные возможности, но надо поучится ему. Я сам пока не очень суперски его знаю.
Регистрация - не вопрос game maker'a надо знать html,HTML5,PHP Конструктор сделать не сложно если знать программу,и не просто если ты новичёк.
Цитата VelociRaptor () племена, охоту, патрули, пары и котят, обучение учеников, смену имени (скажем, Орешек - Орехолап - Орехошкур), битвы и т.д. Как все это сделать?
Ну а это легкодня.Можно сделать и кнопками. В общем,Всё получится
Скажите, а можно обработать в Gamemaker чужую игру про этих котов?Добавлено (22 июня 2016, 08:29) --------------------------------------------- То есть взять ее, суть всю (мейкер, племена и т.д.) оставить, а названия племен, фоны, котов и т.д. изменить.
|
|
| |
MarkB | Дата: Среда, 22 Июня 2016, 15:34 | Сообщение # 5689 |
был не раз
Сейчас нет на сайте
| VelociRaptor, что значит обработать? Игра, про которую ты говоришь является готовым продуктом в котором ты можешь выполнять только прописанные действия. Если ты раздобудешь готовый код этой игры, то может и получится обработать так как ты хочешь. Но если ты хочешь просто изменить название каких-то фракций и какие-то графические элементы, то геймплей то все равно останется прежним. И раз игра онлайн, то есть ли в этом смысл.
|
|
| |
mafon2 | Дата: Среда, 22 Июня 2016, 18:56 | Сообщение # 5690 |
был не раз
Сейчас нет на сайте
| Короче, у меня был какой-то остаточный код в Персонаже. Из-за него все было плохо. Теперь лучше (по клеточкам двигаются, персонаж не накладывается), но все равно, после первого падения movable_block'и прилипают к obj_block'ам – сдвигаются чутка и застревают.
|
|
| |
Minskii | Дата: Среда, 22 Июня 2016, 20:18 | Сообщение # 5691 |
участник
Сейчас нет на сайте
| mafon2, а код падения?!какой?!
Один терранозавр - это 1024 гиганозавра, или 1048576 меганозавров. Java/Kotlin, C#, C++. Android разработчик. Инженер-программист программного обеспечения информационной безопасности мобильных систем.
|
|
| |
mafon2 | Дата: Среда, 22 Июня 2016, 22:24 | Сообщение # 5692 |
был не раз
Сейчас нет на сайте
| Выделил полужирным.
Не уверен, что проблема в падении. Когда я убираю Obj_block из "родителя", они не ззалипают, но персонаж начинает на них наслаиваться + мне хотелось бы, чтобы они считались "твердыми" для взаимодействия с другими предметами. Дело где-то в Obj_block'ах. Но, как я писал, сам Obj_block – пустой, т.е. я даже не знаю, из-за чего он залипает.
Цитата // Горизонтальные столкновения
if (place_meeting(x + speedX,y, Obj_block)) { isMoving = false; moveTimer = gridSize; speedX = 0; speedY = 0 }
if (isMoving == false)
{
// Падение
if (!place_meeting(x,y+speedY,Obj_block)) { isMoving = true; moveTimer = gridSize; speedX = 0; speedY = 1.25*moveSpeed; }
// Вертикальные столкновения
if (place_meeting(x,y + moveSpeed, Obj_block)) { isMoving = false; moveTimer = gridSize; speedY = 0;
}
// Движение вправо
if (place_meeting(x-moveSpeed,y,PLAYER_CHAR) && keyboard_check(vk_right)) { isMoving = true; moveTimer = gridSize; speedX = moveSpeed; speedY = 0;}
// Движение влево
if (place_meeting(x+moveSpeed,y,PLAYER_CHAR) && keyboard_check(vk_left)) { isMoving = true; moveTimer = gridSize; speedX = -moveSpeed; speedY = 0; } }
if (isMoving == true) { x += speedX; y += speedY
moveTimer -= moveSpeed; if (moveTimer == 0) {isMoving = false;} }
UPD: Дело оказалось в увеличенной на 25% скорости падения, я провел эксперимент и обнаружил, что при двойной скорости, персонаж проскакивает мимо объектов. Поставил везде единицы и все норм. Т.е. из-за разницы в скорости столкновения и падения блоки залипали, персонаж пролетал. Хотя у персонажа все чуть по другому... в общем, я запутался, но это уже не важно, главное – проблема видна и единицы спасут мир.
Сообщение отредактировал mafon2 - Среда, 22 Июня 2016, 23:16 |
|
| |
Dragon1234 | Дата: Среда, 06 Июля 2016, 18:56 | Сообщение # 5693 |
почетный гость
Сейчас нет на сайте
| Дорогие мастера ! Как нужно правильно использовать этот код ? Я пишу if (keyboard_check(vk_down)) and (keyboard_check(vk_numpad2)) { И что то происходит } Но то что мне нужно а точнее смена спрайта не выполняется Что делать? :lovegcup:
P.S. Забыл сказать в коде присутствуют позиции там position = right и т.д.
Учусь программировать на Game Makerе .
Сообщение отредактировал Dragon1234 - Среда, 06 Июля 2016, 18:59 |
|
| |
кракозяба | Дата: Среда, 06 Июля 2016, 19:28 | Сообщение # 5694 |
почетный гость
Сейчас нет на сайте
| Dragon1234, у тебя какой вид в игре? сбоку/сверху?
Учи русский! Отговорки "Я не из России", "Мне 11 лет" - не отговорки. Будь грамотным и правильно расставляй запятые!
|
|
| |
Dragon1234 | Дата: Среда, 06 Июля 2016, 20:19 | Сообщение # 5695 |
почетный гость
Сейчас нет на сайте
| Сбоку ( У меня файтинг ) Добавлено (06 июля 2016, 20:19) --------------------------------------------- Сбоку ( У меня файтинг )
Учусь программировать на Game Makerе .
|
|
| |
JohnnyHam | Дата: Среда, 06 Июля 2016, 21:18 | Сообщение # 5696 |
MadBro
Сейчас нет на сайте
| Dragon1234, Ну ты конечно объяснил) Может у тебя там проблема с кодом? Я когда ставил такой код, у меня не возпроизводилась анимация ходьбы. Лучше посмотри туториалы и не парься. Там же в файтинге для каждого удара свой объект нужен
Чем лучше—тем хуже
|
|
| |
Dragon1234 | Дата: Среда, 06 Июля 2016, 21:35 | Сообщение # 5697 |
почетный гость
Сейчас нет на сайте
| Почему же для каждого удара свой обьект ? Я например справляюсь чисто кодом а не обьектами
Учусь программировать на Game Makerе .
|
|
| |
кракозяба | Дата: Четверг, 07 Июля 2016, 07:20 | Сообщение # 5698 |
почетный гость
Сейчас нет на сайте
| Dragon1234, значит тебе нужна смена спрайта? пиши sprite_index= (здесь название спрайта)
Учи русский! Отговорки "Я не из России", "Мне 11 лет" - не отговорки. Будь грамотным и правильно расставляй запятые!
|
|
| |
Dragon1234 | Дата: Четверг, 07 Июля 2016, 10:31 | Сообщение # 5699 |
почетный гость
Сейчас нет на сайте
| Да нужно , но проблема в том что я пишу Например if (keyboard_check(vk_down)) and (keyboard_check(vk_numpad2)) { position = ''right'' sprite_index = k_raikiri_right' and position = ''left'' sprite_index = k_raikiri_left
И у меня ничего не происходит
Учусь программировать на Game Makerе .
Сообщение отредактировал Dragon1234 - Четверг, 07 Июля 2016, 10:32 |
|
| |
кракозяба | Дата: Четверг, 07 Июля 2016, 11:23 | Сообщение # 5700 |
почетный гость
Сейчас нет на сайте
| ты вообще все неправильно написал (и в коде, да и вообще у тебя стоит down, down это вниз) для каждой ходьбы свой оператор (оператор в данном случае это if) т.е. чтобы ходить вправо пиши:
Цитата if (keyboard_check(vk_right)) and (keyboard_check(vk_numpad6)) { position = ''right'' sprite_index = k_raikiri_right' а чтобы влево:
Цитата if (keyboard_check(vk_left)) and (keyboard_check(vk_numpad4)) { position = ''left'' sprite_index = k_raikiri_left' понял!?
Учи русский! Отговорки "Я не из России", "Мне 11 лет" - не отговорки. Будь грамотным и правильно расставляй запятые!
|
|
| |
|