Приветствую Вас, Гость | RSS
Суббота, 27.02.2021, 09:34
Главная » Статьи » Уроки [ Добавить статью ]

Камера
Camera Shake - потряси свой экран
Итак.
Camera Shake – это такой эффект тряски экрана. Он очень хорошо позволяет привлечь внимание игрока к какому то событию. Будь то появление большого босса под ногами которого трясется земля или какой ни будь взрыв. В общем любое событие претендующее на глобальность.

Как это устроено. Все крайне просто. У камеры как у любого объекта есть координаты X и Y. И наша задача изменять их, а потом возвращать камеру в прошлое (стандартное) положение. И так несколько раз.

Как это сделать. Давайте по шагам.
Для начала нам нужен объект камеры. Вообще создание любой игры лучше начинать с создания камеры. Вы можете создать несколько камер что бы переключатся между ними в процессе игры. Может вам захочется сделать CutScene в начале или конце уровня, не важно, объект основной камеры нужен обязательно в каждой игре.
Создаем объект под название camera_1.
И определяем для него некоторые переменные в событии Create
State – это переменная будет отвечать за состояние камеры. 0 – стандартное состояние когда камера стоит на месте что бы не случилось. 1 – когда камера следует за игроком. 2 – когда камера трясется
Shake_control - отслеживает камеру во время тряски. Когда это значение будет равно определенному то трясти перестанем и переведем камеру в прошлый State
X_Previous и Y_Previous будут запоминать положение камеры до начала тряски
Shake_state – будет определять продолжительность тряски

Итак.
Переменные определили. Теперь привяжем камеру к комнате.
Открываем комнату и идем на закладку Views. Проставляем все галочки. И определяем размер экрана. К примеру 640 на 480. Теперь ищем ниже пункт Object Following. Там говорим что следовать за нашим объектом camera_1. Далее в уме делим установленный нами размер экрана на 2 и вписываем эти значения в HBor и VBor, в нашем случае пишем 320 на 240. После этого перемещением игрового экрана будет управлять именно наша камера.
Далее.
В папочке Scripts создаем скрипт с названием shake_script (название может быть любое. И в него уже пишем следующий код:
{
camera_1.shake_control += 1; //каждый шаг прибавляем по еденичке что бы отследить когда заканчивать тряску.
camera_1.x = camera_1.x_previous; //Возвращаем камеру
camera_1.y = camera_1.y_previous; // В предыдущее место (до тряски)
if camera_1.shake_control = argument0 then //Определяем равно ли значение shake_control заданному нами значению.
{
camera_1.state = 1; // Если они совпадают то переводим камеру в режим следования за игроком и завершаем скрипт
exit
}
Else //Если не равно…
{
camera_1.x += random (50); //Перемещаем камеру на на любое количество пикселей от 1 до 50 по оси X
camera_1.y += random (50); //тоже самое по оси Y
}

}
Итак скрипт готов. Сохраняем его и пользуемся себе на радость.
Далее
В событии Step создаем код который будет отслеживать текущее состояние камеры и выполнять с ней соответствующие действия:
{
if camera_1.state = 1 // Если камера в режиме следования за игроком, то записываем ее координаты и говорим что ее настоящие координаты такие какие на данный момент у персонажа игрока. Так же тут мы сбросим счетчик тряски на 0
{
x = Player.x;
y = Player.y;
id.x_previous = x;
id.y_previous = y;
id.shake_control = 0;
}
if camera_1.state = 2 then //Если мы вошли в режим тряски, то запустить потрясти камеру столько сколько указано в shake_state
{shake_script(shake_state);
}
}
Для примера можем на кнопку 1 на нумпаде забить установку значения переменной shkae_state на 10 и посмотреть все в игре.
{
id.state = 2;
id.shake_state = 10;
}
Вот так мы запускаем нашу тряску. Вписав этот код в событие нажатия на кнопку «1» на нумпаде.
Категория: Уроки | Добавил: RagnaRock (31.05.2010)
Просмотров: 645 | Комментарии: 2 | Рейтинг: 0.0/0
Всего комментариев: 2
#0 написал: (29.08.2010)
Бред, незачем.

--------------------
#0 написал: Дэнииэль (06.08.2010)
Прикольно, но зачем оно надо?

--------------------
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2021 |