Плохо! Плохо!:  0
Показано с 1 по 5 из 5

Тема: При нажатии "влево+право" игрок стоит на месте. Можно ли это как-то убрать?

  1. #1
    Местный Аватар для Axel_Key
    Информация о пользователе
    Регистрация
    26.03.2017
    Адрес
    Горно-Алтайск
    Сообщений
    155
    Записей в дневнике
    3
    Репутация: 2 Добавить или отнять репутацию

    По умолчанию При нажатии "влево+право" игрок стоит на месте. Можно ли это как-то убрать?

    Когда я нажимаю "влево" + "право", игрок стоит на месте. Я понимаю, что для многих мейкеристов это не является проблемой, так как зачастую игры создаются в жанре "адвенчура" (для чего этот движок прекрасно подходит), НО..
    Я экспериментатор, и очень люблю делать экшн боевки на ивентах и немного магии (некоторые плагины). :<

    Так вот, проблема в том, что игра довольно активная и у персонажа есть такое умение как "рывок". И рывок работает хорошо, особенно когда играешь с геймпада. Ведь крестовина геймпада не позволяет нажать "Влево + вправо" одновременно, как и его стик. А вот в игре с клавиатуры это превращается в настоящую проблему!
    Например: Если игрок двигается вправо, но ему надо срочно нажать рывок влево, - он нажимает влево + рывок. И если в этот момент другой его палец продолжает все еще лежать на кнопке "вправо", то рывок работает на месте! То есть, он как бы есть, дает неуязвимость, но нет движения!
    И все бы ничего, эту проблему можно избежать, если тыкать кнопки "влево/вправо" по отдельности... Но во время активного геймплея за этим сложно уследить. (особенно с клавиатуры, возможно проблема в том что я привык к геймпаду)

    Чтобы вы понимали, что такая вещь как мгновенный "стоп игрока" может быть неприятна на рпг мейкере, я прикрепил видео с геймплеем прототипа, над которым сидел четыре дня:



    Если есть способ убрать стоп при нажатии влево+вправо, чтобы последнее нажатие перекрывало предыдущее, - буду очень благодарен! С клавиатуры действительно тяжело в это играть...
    Древнее зло вновь пробудилось, чтобы оккупировать раздел помощи...

  2. #2
    Администратор Аватар для Пётр
    Информация о пользователе
    Регистрация
    24.04.2014
    Адрес
    Краснодар
    Сообщений
    3,093
    Записей в дневнике
    6
    Репутация: 124 Добавить или отнять репутацию

    По умолчанию

    Я тут думал...
    Да нихрена ты не сделаешь. Вот как программе понять куда рывок если зажаты два направления? Ты понимаешь куда те надо, прога нет.
    Делай рывок на двойное нажатие стрелочки.

  3. #3
    Местный Аватар для KARAKURT
    Информация о пользователе
    Регистрация
    11.05.2008
    Сообщений
    177
    Записей в дневнике
    4
    Репутация: 5 Добавить или отнять репутацию

    По умолчанию

    А я вообще не понял, что нужно.
    Можно сделать, чтобы персонажа разрывало на две части, одна уходила налево, другая направо.

  4. #4
    Местный Аватар для Axel_Key
    Информация о пользователе
    Регистрация
    26.03.2017
    Адрес
    Горно-Алтайск
    Сообщений
    155
    Записей в дневнике
    3
    Репутация: 2 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от KARAKURT Посмотреть сообщение
    А я вообще не понял, что нужно.
    Можно сделать, чтобы персонажа разрывало на две части, одна уходила налево, другая направо.
    Нужно.. Чтобы кнопки влево и вправо работали по приоритету, как в любой другой игре.. Например, когда ты зажимаешь вправо, но резко нажимаешь влево, - игра забывает что вправо нажата и переключается налево.
    Т.е. работает последняя нажатая кнопка, а не обе сразу.
    Древнее зло вновь пробудилось, чтобы оккупировать раздел помощи...

  5. #5

    По умолчанию

    Сохраните этот код в файл с расширением .js в папке plugins и подключите его через менеджер плагинов:

    Код:
    (function () {
        var oppositeDirections = {
            'up': 'down',
            'down': 'up',
            'left': 'right',
            'right': 'left',
        };
    
    
      var Input_onKeyDown = Input._onKeyDown;
      Input._onKeyDown = function(event) {  
          var button = this.keyMapper[event.keyCode];
          if (button) {
              var opposingButton = oppositeDirections[button];
              if (opposingButton) {
                  this._currentState[opposingButton] = false;
              }
          }
    
          return Input_onKeyDown.call(this, event);
      };
    })();

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •