Ваше событие должно выглядеть так:
Если вы запустите игру, вы заметите, что пули стреляют из тела игрока, а не из пистолета. Давайте исправим это, поместив image point на конце пистолета. (Image point (точка изображения) – это точка на изображении, из которого вы можете выбрасывать объекты).
Кликните правой кнопкой мыши по игроку на проекте или панели объектов и выберите Edit animations.
Снова появится редактор изображения. Кликните по инструменту origin and image points (источник и точки изображения):
…и откроется диалоговое окно image points:
Обратите внимание, что центр объекта появляется в виде красной точки. Это «горячая точка» или «точка вращения» объекта. Если вы вращаете объект, он крутится вокруг центра. Мы хотим добавить еще одну точку для пистолета, поэтому кликните зеленую кнопку add. Появится синяя точка – это наша новая точка изображения. Кликните левой кнопкой мыши на краю пистолета, чтобы разместить там точку изображения:
Закройте редактор изображения. Кликните два раза по действию Spawn an object, которое мы добавили ранее и измените Image point на 1. (Центр всегда является первой точкой изображения. Помните, что Construct 2 начинает отсчет с нуля). Событие должно выглядеть так, как показано на рисунке ниже. Обратите внимание: теперь на нем написано Image point 1:
Запустите игру. Теперь пули вылетают с пистолета! Однако пока пули ничего не делают. Надеюсь, что, вы понимаете, что когда вы разберетесь с системой событий, вы легко сможете составить функции игры.
Давайте сделаем пули активными – которые могут убивать монстра. Добавьте следующее событие:
Condition: [i]Bullet[/i] -> [i]On collision with another object[/i] -> pick [i]Monster[/i].
Action: [i]Monster[/i] -> [i]Destroy[/i]
Action: [i]Bullet[/i] -> [i]Spawn another object[/i] -> [i]Explosion[/i], layer [b]1[/b]
Action: [i]Bullet[/i] -> [i]Destroy[/i]
Эффект взрыва
Запустите игру и попробуйте стрелять в монстра. Ой! Взрыв имеет большую черную границу!
Возможно, Вы предполагали, что так оно должно выглядеть и задумывались, останется ли этот эффект! Не беспокойтесь – нет. Кликните по Explosion object на Object bar (панели объектов) в нижнем правом углу или по Project bar (панели проектов) (которая была табулирована с layers bar (панель слоев). Слева появятся свойства на properties bar (панели свойств). Внизу установите настройки Blend mode в режим Additive*. Теперь попробуйте запустить игру снова.
Почему это работает? Если объяснить без деталей – простые изображения вставляются поверх экрана. С помощью эффекта Additive каждый пиксель добавляется (суммируется) с пикселем фона за ним. Черный – это нулевое значение пикселя, поэтому ничего не добавляется – вы не видите черный фон. Более яркие цвета добавляют больше, поэтому кажутся более сильными. Они отлично подходят для взрыва и световых эффектов.
Делаем монстра немного умнее
На данный момент монстры уходят с плана направо. Давайте сделаем их немного интересней. Вначале давайте запустим их под произвольным углом.
Condition: [i]System[/i] -> [i]On start of Layout[/i]
Action: [i]Monster[/i] -> [i]Set angle[/i] -> random(360)
Они все равно будут исчезать, когда покидают границы плана. Давайте оставим их в границах плана. Мы направим их обратно на игрока, когда они будут подходить к границе. Это имеет два эффекта: они всегда остаются в границе плана и, если игрок остается на месте, монстры идут прямо на него!
Condition: [i]Monster[/i] -> [i]Is outside layout[/i]
Action: [i]Monster[/i] -> [i]Set angle toward position[/i] -> For X, [b]Player.X[/b] - for Y, [b]Player.Y[/b].
Запустите игру. Если вы поиграете немного, вы заметите, что монстры так же, как игрок, остаются в рамках плана и движутся в разных направлениях. Это не AI, но сойдет и так!
Теперь, я думаю, мы хотим, чтобы монстра можно было убить с пяти выстрелов, а не с одного. Как мы это сделаем? Если у нас есть только один "Health counter" (счетчик здоровья), то когда мы выстрелим в одного монстра пять раз, умрут все монстры сразу. Нам необходимо, чтобы каждый монстр помнил собственный уровень здоровья. Мы можем сделать это с instance variables (переменные).