Yuryol

АБС. Экшен, динамика, функции

Оценить эту запись
Как поклоннику "Эквилибриума" и боевых сцена в "матрице" (хотя сам фильм не люблю) всегда хотелось добавить динамичности и гибкости в перестрелки в своей АБС.

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


Поэтому многое пытаюсь сделать именно для маневренности героя и динамичности боев

Фиксация направления

Наверное самое легкое что можно придумать, так как такая возможность есть в самом мукере, а значит просто привяжем это к кнопке.

Код:
if (Input.isTriggered('capslock')) {
     $gamePlayer._directionFix = !$gamePlayer._directionFix;
}
Блокирование движения

Задача капельку сложнее. Тут нам надо самим добавить свойство, которое позволяет героя поворачиваться не двигаясь. Назовем его isBlockMove

Код:
if (Input.isTriggered('v')) {
     $gamePlayer.isBlockMove = !$gamePlayer.isBlockMove;
}
Ну а теперь в стандартной функции moveStraight делаем проверку включено ли это свойство.

1) если нет - позволяем ему (this) идти в заданном напарвлении (d)
Game_Character.prototype.moveStraight.call(this, d)

2) если же свойство есть - разрешаем ему только повернуться
this.setDirection(d)

Код:
var YuryolMoveStraight = Game_Player.prototype.moveStraight;
    Game_Player.prototype.moveStraight= function(d) {
        YuryolMoveStraight.call(this);
        ($gamePlayer.isBlockMove) ? this.setDirection(d) : Game_Character.prototype.moveStraight.call(this, d);
    };
Отход назад

Нам надо чтоб герой при нажатии на кнопку резко отсупил допустим на 2 клетки назад. Эта задачка еще сложнее.

1) в основном из-за вымученной функции moveEvent из этого поста: тык

2) Здесь нам понадобится немного иная блокировка - блокируем вообще все движения героя. Для этого создадим новое свойство block и функции для его включения/выключения:

Код:
 Game_Player.prototype.disableBlock = function() { 
        this.block = false;
    };
    Game_Player.prototype.enableBlock = function() { 
        this.block = true; 
    };
3) Лезем в функцию Game_Player.prototype.canMove и добавляем в условие проверку включен ли наш "блок")

Код:
    if ($gameMap.isEventRunning() || $gameMessage.isBusy() || $gamePlayer.block) {
            return false;
        }
4) Конечно же ускорение должно делать героя быстрее. поэтому прибавляем герою скорость на две единицы

Код:
$gamePlayer._moveSpeed = $gamePlayer._moveSpeed+2;
5) Итого сама функция ускорения,где
n - количество шагов,на которые пробежит герой
13 - код для ROUTE_MOVE_BACKWARD, т.е. для движения героя назад

Код:
    Scene_Map.prototype.boost = function(n) {
        $gamePlayer.enableBlock();
        $gamePlayer._moveSpeed = $gamePlayer._moveSpeed+2;
        $gameMap.moveEvent(0, 13, n);
    };
6) Не забываем отключить блокировку движения. Добавляем в moveEvent следующую строчку. Она добавляет в маршрут героя скрипт (код 45) для отключения блока - parameters: ["$gamePlayer.disableBlock();"]

Код:
route.list[amount] = {code: 45, parameters: ["$gamePlayer.disableBlock();"], indent: null};
Альтернативное оружие

Об этом завтра, спать хочу

Отправить "АБС. Экшен, динамика, функции" в Digg Отправить "АБС. Экшен, динамика, функции" в del.icio.us Отправить "АБС. Экшен, динамика, функции" в StumbleUpon Отправить "АБС. Экшен, динамика, функции" в Google Отправить "АБС. Экшен, динамика, функции" в VKontakte Отправить "АБС. Экшен, динамика, функции" в Facebook

Обновлено 14.10.2018 в 02:08 Yuryol

Метки: Нет Добавить / редактировать метки
Категории
АБС , Покодим

Комментарии