Четверг, 14 Ноября 2024, 21:04

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос - Ответ (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
почетный гость
Сейчас нет на сайте
Сбоку ( У меня файтинг )
:D

Добавлено (06 июля 2016, 20:19)
---------------------------------------------
Сбоку ( У меня файтинг )
:D


Учусь программировать на Game Makerе .
JohnnyHamДата: Среда, 06 Июля 2016, 21:18 | Сообщение # 5696
MadBro
Сейчас нет на сайте
Dragon1234, Ну ты конечно объяснил)
Может у тебя там проблема с кодом? Я когда ставил такой код, у меня не возпроизводилась анимация ходьбы. Лучше посмотри туториалы и не парься.
Там же в файтинге для каждого удара свой объект нужен


Чем лучше—тем хуже
Dragon1234Дата: Среда, 06 Июля 2016, 21:35 | Сообщение # 5697
почетный гость
Сейчас нет на сайте
Почему же для каждого удара свой обьект ? Я например справляюсь чисто кодом а не обьектами
B) lovegcup


Учусь программировать на 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 лет" - не отговорки. Будь грамотным и правильно расставляй запятые!
Поиск:

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