Войти на сайт

Авторизация, ждите ...
×

ТЕМА: Так все таки как сделать Drag'n'drop?

Так все таки как сделать Drag'n'drop? 4 года 6 мес. назад #116896

  • Seibur
  • Seibur аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 371
  • Спасибо получено: 308
  • ВетеранРазработчик
Я очень удивлен. Печально удивлен.
За все время существования мейкера - никто так и не написал плагином на Drag'n'Drop картинок.

Окей, что у нас есть похожего:
Плагин на мышь - mvplugins.tordamian.com/plugins/mouse-sy..._to_activate_options
Плагин от Янфлая - www.yanfly.moe/wiki/Picture_Common_Events_(YEP)
Плагин на Drag'n'Drop эвентов - kingpin-rbd.itch.io/rmmv-script-mighty-mouse
Плагин на свайпы - sumrndm.site/swipe-input/

Все эти плагины опираются на TouchInput:

0ISl5S4.png


Обычно в ветвлении событий в кал скрипте используются следующие команды:

TouchInput.isPressed()
TouchInput.isTriggered()
TouchInput.isRepeated()
TouchInput.isLongPressed()

github.com/PicusViridis/RPG-Maker-MV-Tou.../TouchInputUpdate.js
- даже есть плагин на отслеживания Х и У в тачинпуте, но как им пользоваться непонятно.

Но на деле толку от них мало, потому что эти команды бесполезны для реализации перетаскивания.

Есть еще один способ, но крайне костыльный:

2020-05-14_005335.png


Смысл его в следующем: куда игрок кликает - туда и перемещается картинка относительно координат центра.
Если попробовать зажать лкм, то создаться визуальная иллюзия свободного перемещения.


На самом деле - в теории - этот плагин феноменально прост, и подразумевает следующие команды:


- Set axes - ограничить ось перетаскивания по Х, или по У. Или разрешить это делать без ограничений.
- Set Enabled / Disabled - вкл / выкл перетаскивания во время игры
- Is dragging - True, если объект в данный момент перетаскивается мышью или касанием.
- Is enabled - True, если ф-ции перетаскивания вкл
- On drag start - триггер начало перетаскивания
- On drop - триггер отпускания картинки
- Drop - если происходит перетаскивания, то закончить его в данный момент.
- функции для сравнения координат картинки с указанными координатами, возможность привязки картинки к координатам, если перетаскивание не осуществляется.
- возможность узнать перекрывает ли картинка другую картинку т.е. скриптом сравнить их номер.
- Перемещение картинки в четкой, ограниченной, заданной области х и у.



Такой плагин открывает мириады возможностей и механик для реализации геймплея на карте.

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

Такие мои соображения по этому поводу. Как сделать это - я не знаю, но основная идея у меня есть.

И то, что кажется простым, на деле может оказаться сложно реализуемым в плане написания кода.
Будь таким, каким хочешь казаться.
Последнее редактирование: 4 года 6 мес. назад от Seibur.
Администратор запретил публиковать записи гостям.

Так все таки как сделать Drag'n'drop? 4 года 6 мес. назад #116897

  • yuryol
  • yuryol аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1704
  • Спасибо получено: 2731
  • 1 место в ГотвКомпозиторУчительОраторОрганизатор конкурсов2 место 3 место ГотвПобедитель конкурса
подобный плагин не написали, потому что никому это не нужно.

1) тот кто хочет делать карточную игру - делает ее на html+css+js например. зачем перелопачивать движок МВ и впихивать туда драг-н-дроп, если в чистом HTML+JS есть драг-н-дроп по умолчанию?

вот, например, написал щас на чистом JS подобие крафта минут за 10, строк около 60. слева инвентарь, справа - рецепт. перетаскиваем в рецепт итемы. если хотим несколько одинаковых итемов - перетаскиваем еще один с инвентаря в рецепт, или слайдом вниз в окне рецепта
гиф

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

2) на чистом ЖС написать не сложно и быстро, но вставлять в мейкер для ограничного взаимодействия муторно

например чтобы сделать из созданного в предыдущем пункте скрипта настоящий плагин для МВ - тут уже надо потратить гораздо больше часа. лезть в инвентарь мейкера, вычленять итемы из базы, отключать стандартную мышь во время открытия нашего плагинчика, смотреть как используются итемы в МВ (а используются они довольно мутно, не одной строчкой), думать как делать рецепты - через умения или итемы. вставлять запрет вызова крафта из меню или во время битв.

3) кроме этого, надо еще будет вставлят управление с клавиатуры и геймпада. иначе плагин будет неполноценный, учитывая что много игроков в мейкер играют геймпадом или чисто клавиатурой,без мышки. не будут же они всю игру проходить геймпадом,а во время того ж крафта тянуться к мышке. а вот вставлять клавиши и геймпад в чистый ЖС не особо удобно
а мышка в МВ реализована не очень, мягко говоря. поэтому для карточных игр, как я уже говорил, проще делать на чистом

4) использующих этот плагин БЕЗ клавиш или кнопок гемйпада будет очень мало.
- игры состоящие чисто из карт проще саздать на ЖС а не на МВ.
- вставлять драг-н-дроп без клавиш в большую игру на мукере есть смысл если ВСЯ игра управляется мышкой или тачпадом
а потому подобный плагин имеет случай быть только например в мобильных играх, которые делают на МВ оч мало людей.

ну и вдобавок ко всему, лично я хочу чтоб в мои игры играли геймпадом, поэтому мне этот плагин не нужен, и тратить время на него я не хочу. да и вообще я не любитель мыши, и если бы все сайты удобно управлялись с клавы, то с удовольствием вообще бы отказался от нее :unsure:
Последнее редактирование: 4 года 6 мес. назад от yuryol.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy

Так все таки как сделать Drag'n'drop? 4 года 6 мес. назад #116903

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1196
  • Спасибо получено: 543
  • Проект месяца 1 местоВетеранУчительПроект года 3 местоПроект месяца 3 местоПроект месяца 2 место
yuryol пишет:
подобный плагин не написали, потому что никому это не нужно.

1) тот кто хочет делать карточную игру - делает ее на html+css+js например. зачем перелопачивать движок МВ и впихивать туда драг-н-дроп, если в чистом HTML+JS есть драг-н-дроп по умолчанию?

вот, например, написал щас на чистом JS подобие крафта минут за 10, строк около 60. слева инвентарь, справа - рецепт. перетаскиваем в рецепт итемы. если хотим несколько одинаковых итемов - перетаскиваем еще один с инвентаря в рецепт, или слайдом вниз в окне рецепта
гиф

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

2) на чистом ЖС написать не сложно и быстро, но вставлять в мейкер для ограничного взаимодействия муторно

например чтобы сделать из созданного в предыдущем пункте скрипта настоящий плагин для МВ - тут уже надо потратить гораздо больше часа. лезть в инвентарь мейкера, вычленять итемы из базы, отключать стандартную мышь во время открытия нашего плагинчика, смотреть как используются итемы в МВ (а используются они довольно мутно, не одной строчкой), думать как делать рецепты - через умения или итемы. вставлять запрет вызова крафта из меню или во время битв.

3) кроме этого, надо еще будет вставлят управление с клавиатуры и геймпада. иначе плагин будет неполноценный, учитывая что много игроков в мейкер играют геймпадом или чисто клавиатурой,без мышки. не будут же они всю игру проходить геймпадом,а во время того ж крафта тянуться к мышке. а вот вставлять клавиши и геймпад в чистый ЖС не особо удобно
а мышка в МВ реализована не очень, мягко говоря. поэтому для карточных игр, как я уже говорил, проще делать на чистом

4) использующих этот плагин БЕЗ клавиш или кнопок гемйпада будет очень мало.
- игры состоящие чисто из карт проще саздать на ЖС а не на МВ.
- вставлять драг-н-дроп без клавиш в большую игру на мукере есть смысл если ВСЯ игра управляется мышкой или тачпадом
а потому подобный плагин имеет случай быть только например в мобильных играх, которые делают на МВ оч мало людей.

ну и вдобавок ко всему, лично я хочу чтоб в мои игры играли геймпадом, поэтому мне этот плагин не нужен, и тратить время на него я не хочу. да и вообще я не любитель мыши, и если бы все сайты удобно управлялись с клавы, то с удовольствием вообще бы отказался от нее :unsure:
Ну мышь реализована в mv не как мышь а как сенсор. В mv нет понятия мышь а есть понятия тач пад но да эта самая простая реализация которая есть. Во вторых вроде поддержка гемпада в mv по стандарту отсуствует ну или не полностью.
А с тем что нефиг писать на mv то что не задумано ну в целом согласен но сущесвуют такие понятия как мини игры но даже это понятия должно иметь придел. RPG Maker движок для создания RPG игр но никак не карточных игр. Даже если нужно миниигру карточную сделать то 2 варианта.
1. Заплатить деньги чтоб вам любителю извращаться написали плагин.
2. Как самый адекватный и простой это взять другой движок. Например Game Maker из 2d или более продвинутые Unity или UE 2D/3D.

А ответ что это никому не надо в корне не верен. Скорее это мало кому надо чтоб за бесплатно тратить время. Думаю те кто делают такое (А такие увы есть) уже писали эти системы. Да те кто хорошо знают JS и любят поизвращаться давно написали. Но проблема что это обычно пишется под конкретно 1 случай и проще говоря для других проектов пускай и похожих плагин будет бесполезным. Лично на MV я такого не встречал но видел такие скрипты на проектах VX Ace где конкретная мини игра зарыта в куче других и работает только конкретно на этом проекте и без ковыряния заставить работать в другом невозможно ну или куча мусора будет.
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Последнее редактирование: 4 года 6 мес. назад от Alexandr_7.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Seibur

Так все таки как сделать Drag'n'drop? 4 года 6 мес. назад #116904

  • Lekste
  • Lekste аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 913
  • Спасибо получено: 566
  • Даритель СтимкеяПрограммист RubyПрограммист JavaScript ВетеранОратор
Ну не на чистом JS, а pixijs взять лучше. А ещё, как Mur перестал(а) напоминать, вы забыли про Godot :)
Как его увидел, gamemaker разонравился.

Это звучит примерно как, брать фотошоп, ради того, чтобы обрезать края картинки. Нужна только одна функция, но зачем-то тянуть кучу ненужных функций.
Последнее редактирование: 4 года 6 мес. назад от Lekste.
Администратор запретил публиковать записи гостям.

Так все таки как сделать Drag'n'drop? 4 года 6 мес. назад #117343

  • Hugo
  • Hugo аватар
  • Вне сайта
  • Путник
  • Сообщений: 2
  • Спасибо получено: 1
Не вводите человека в заблуждение, вполне себе реализуемо в мейкере в ~50 строк кода. Проблема с вводом исключительно мышкой решается дублированием управления на клавиатуру, тут уже всё зависит от находчивости.


Ссылка на ГИФ, небольшие лаги, но суть ясна

Так-же при наведении на изображение можно отключать дефолтный инпут функцией:
doloyControl = Game_Player.prototype.moveByInput // Отключение управления
    Game_Player.prototype.moveByInput = function() {
        if (Условие) return;
        return doloyControl.call(this);
    };

Если хочешь - делай. Мв стерпит всё.
Последнее редактирование: 4 года 6 мес. назад от Hugo.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: ZX_Lost_Soul

Так все таки как сделать Drag'n'drop? 4 года 6 мес. назад #117348

  • DK
  • DK аватар
  • Вне сайта
  • Светлый дракон
  • DKPlugins
  • Сообщений: 946
  • Спасибо получено: 1129
  • Оратор2 место Программист RubyРазработчикПроект месяца 1 местоВетеранУчительДаритель СтимкеяПаладинПроект месяца 3 место
1. Мышь реализована в мв, как мышь. Можно отслеживать нажатия левой, средней, правой клавиш, прокрутку колесика. Это все есть в dktools.
2. У меня есть наработки для drag and drop, но пока это не доделано. Возможно, никогда не будет доделано.
3. Лаги из-за гиф или само перемещение не плавное? Мне кажется второе...
На pixi по-любому это есть. Надо только найти, прикрутить к мв. Я пока не искал. Было интересно самому попробовать.
Последнее редактирование: 4 года 6 мес. назад от DK.
Администратор запретил публиковать записи гостям.

Так все таки как сделать Drag'n'drop? 4 года 6 мес. назад #117350

  • Hugo
  • Hugo аватар
  • Вне сайта
  • Путник
  • Сообщений: 2
  • Спасибо получено: 1
Гиф лагает, просмотри второй раз когда картинка загрузится полностью. Однако ~1 из 5 раз картинка срывается с захвата, возможно из-за того что маленькая, не уверен, скрипт писал для демонстрации.

Делалось обычными векторами, уровень скилла в js и мейкере на троечку.
Последнее редактирование: 4 года 6 мес. назад от Hugo.
Администратор запретил публиковать записи гостям.
Модераторы: NeKotZima
Время создания страницы: 0.245 секунд