Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Использование переменной для стрельбы в разных направлениях



Для установки направления пули, также может быть использована переменная, в данном случае, для установки направления пули, мы будем использовать переменную IMAGE_SINGLE.

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

Создаем спрайт для главного игрового персонажа в котором он расположен (смотрит) во всех 4 направлениях (вверх, вниз, влево и направо).

ОБРАТИТЕ ВНИМАНИЕ: Если Вы хотите чтобы Ваш игровой персонаж был анимированный, тогда придется использовать 4 мульти-фреймных (анимированных) спрайта, вместо одного спрайта с 4 персонажами развернутыми (смотрящими) в разные стороны. Рассматриваемая ниже методика не будет работать, при использовании более чем одного спрайта.

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

В событиях для клавиш направлений нашего игрового персонажа (для каждой клавиши) добавляем иконку 'X=2' которая находится в списке действий во вложении CODE и помещаем в поле 'variable' переменную ' image_single ', значение (new value) будет различное в зависимости от выбранной клавиши...

Клавиша | Значение
------------------------------
UP | 0
RIGHT | 1
DOWN | 2
LEFT | 3

Как и раньше в событии выстрела (клавиша 'Space') добавляем действие ' Create instance ' (светящаяся лампочка).

Теперь в событии CREATE объекта пули нужно поместить приведенный ниже сценарий, копируем весь текст находящийся между словами --- врезка ---

------------------------------ врезка -----------------------------
{
if (player.image_single = 0)
{
x = player.x+player.sprite_width/2-[ПШП];
y = player.y-[ВП];
direction = 90;
}
if (player.image_single = 1)
{
x = player.x+player.sprite_width;
y = player.y+player.sprite_height/2-[ПВП];
direction = 0;
}
if (player.image_single = 2)
{
x = player.x+player.sprite_width/2-[ПШП];
y = y+player.sprite_height;
direction = 270;
}
if (player.image_single = 3)
{
x = player.x-[ШП];
y = player.y+player.sprite_height/2-[ПВП];
direction = 180;
}
speed = 2
}

---------------------------- врезка ---------------------------

В данном коде необходимо внести некоторые изменения, а именно в позиции [], для этого воспользуемся обозначениями указанными ниже...

[ШП] = Ширина Пули
[ВП] = Высота Пули
[ПШП] = Половина Ширины пули
[ПВП] = Половина Высоты Пули

Когда Вы будете добавлять ваши значения, НЕ используйте скобки [], только указывайте цифру.

Теперь давайте более подробно рассмотрим небольшой фрагмент сценария...

if (player.image_single=0)
{
x = player.x+player.sprite_width/2-[ПШП];
y = player.y-[ВП];
direction=90;
}

Взглянем на первую строку сценария, эта часть проверяет условие истинности (TRUE), в данной строке проверяется является ли переменная image_single объекта player равной 0, если проверяемая часть равна (equal) 0, в таком случае сее означает что выражение ИСТИННО и тогда выполняется сценарий заключенный в круглые {} скобки, если проверяемое выражение не истинно, то данный кусок кода пропускается и проверяется следующую его часть.

Предположим что рассмотренная часть истинна и проверяем следующую часть сценария заключенного в круглые {} скобки.

x = player.x+player.sprite_width/2-[ПШП];
y = player.y-[ВП];
direction = 90;

Первая строка кода изменяет ось Х объекта player, исполняемый код является не очень комплексным уравнением, зато позволяет получить более близкие значения...

ОБРАТИТЕ ВНИМАНИЕ: я заменил [ПШП] значением половины ширины пули

player.x+player.sprite_width/2-3;

" player.x " - Возвращает значение оси Х для объекта player
" player.sprite_width/2-3 " - Возвращает ширину спрайта для объекта главного
героя, затем делит её на 2, после чего вычитает 3.

ОК с первой строкой разобрались..., теперь давайте рассмотрим следующее уравнение...

ОБРАТИТЕ ВНИМАНИЕ: я заменил [ВП] значением высоты пули

y = player.y-6;

" player.y-6 " - Возвращает значение оси Y для объекта player после чего вычитаем 6.

Причина по которой мы использовали переменные подобные player.x связаны с тем, что мы не можем использовать фиксированное число, так как ось X и Y игрового персонажа изменяется, когда главный герой перемещается по комнате/уровню. Если бы мы использовали фиксированные числа подобно указанным ниже...

x = 100+12-3;
y = 100-6;

это сделало бы ось X и Y пули (потому что объект запускается из сценария) всегда равной 'X=103 и Y=94 ' (значение уравнений).

Оставшиеся части изучаемого сценария несколько отличаются друг от друга, но тем не менее все они используют одни и те же 'правила поведения', а последняя строка сценария " speed=2 " устанавливает скорость, с которой наша пуля перемещается, увеличивая данное значение мы увеличим скорость.





Дата публикования: 2014-10-25; Прочитано: 240 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...