Yuryol

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

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

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

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

[size=6]Фиксация направления[/size]

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

[code]
if (Input.isTriggered('capslock')) {
$gamePlayer._directionFix = !$gamePlayer._directionFix;
}[/code]

[size=6]Блокирование движения[/size]

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

[code]if (Input.isTriggered('v')) {
$gamePlayer.isBlockMove = !$gamePlayer.isBlockMove;
}[/code]

Ну а теперь в стандартной функции moveStraight делаем проверку включено ли это свойство.

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

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

[code]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);
};[/code]

[size=6]Отход назад[/size]

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

1) в основном из-за вымученной функции moveEvent из этого поста: [url=http://rpgmaker.ru/forum/fakultet-skriptov/62061-peremennye-prostye-skripty-funktsii-rpg-maker-mv?start=40#105728]тык[/url]

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

[code]
Game_Player.prototype.disableBlock = function() {
this.block = false;
};
Game_Player.prototype.enableBlock = function() {
this.block = true;
};[/code]

3) Лезем в функцию Game_Player.prototype.canMove и добавляем в условие проверку включен ли наш "блок")

[code] if ($gameMap.isEventRunning() || $gameMessage.isBusy() || $gamePlayer.block) {
return false;
}[/code]

4) Конечно же ускорение должно делать героя быстрее. поэтому прибавляем герою скорость на две единицы

[code]$gamePlayer._moveSpeed = $gamePlayer._moveSpeed+2;[/code]

5) Итого сама функция ускорения,где
n - количество шагов,на которые пробежит герой
13 - код для ROUTE_MOVE_BACKWARD, т.е. для движения героя назад

[code] Scene_Map.prototype.boost = function(n) {
$gamePlayer.enableBlock();
$gamePlayer._moveSpeed = $gamePlayer._moveSpeed+2;
$gameMap.moveEvent(0, 13, n);
};[/code]

6) Не забываем отключить блокировку движения. Добавляем в moveEvent следующую строчку. Она добавляет в маршрут героя скрипт (код 45) для отключения блока - parameters: ["$gamePlayer.disableBlock();"]

[code]route.list[amount] = {code: 45, parameters: ["$gamePlayer.disableBlock();"], indent: null};[/code]

[size=6]Альтернативное оружие[/size]

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

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

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

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

Комментарии