Создание ролевых игр (10 урок)
СТЕНКИ
Перед тем как рассказать о стрельбе, наверное, стоит рассказать, как делать стенки. Сначала как обычно делаем героя. Преобразовали его в символ и в панели свойства назвали его hero и не забываем писать ему этот код:
onClipEvent (load) {
s = 10;
}
onClipEvent (enterFrame) {
if (Key.isDown(Key.RIGHT)) {
this._x += s
_rotation = 90;
} else if (Key.isDown(Key.UP)) {
_rotation = 0;
this._y -= s
} else if (Key.isDown(Key.DOWN)) {
_rotation = 180;
this._y += s
} else if (Key.isDown(Key.LEFT)) {
_rotation = 270;
this._x -= s
}}
(подробнее смотри урок номер один. После того как мы создали героя, создадим прямоугольник в верхней части рабочей области. Преобразуем его в клип. И зададим ему такой код:
onClipEvent (enterFrame) {
if (_root.hero.hitTest(this)) {{//при взаимодействии нашего героя со стенкой.
_root.hero._y += _root.hero.s; //программа обращается к клипу с героем и берёт из клипа переменную s т. е. скорость героя… и отталкивает героя от стенки на его же скорость(значения скорости героя и отталкивания от стены должны быть равны если оно(значение отталкивания) будет больше чем скорость героя тогда герой будет отскакивать от стены, а если меньше … это мы рассмотрим ниже)
}
}
Ну, в общем-то, стенка готова. Что бы сделать нижнюю стенку нужно заменить в код плюс на минус. А чтобы сделать левую стенку нужно написать такой код:
onClipEvent (enterFrame) {
if (_root.hero.hitTest(this)) {{
_root.hero._x += _root.hero.s; // по оси икс стенка отталкивает героя в сторону противоположную его движению.
}
}
Ну а для создания правой стенки просто заменяем плюс минусом.
Теперь рассмотрим пример. Если значение отталкивания будет меньше чем скорость героя например так(код для стенки):
onClipEvent (enterFrame) {
if (_root.hero.hitTest(this)) {{
_root.hero._x += _root.hero.s/2; // значение отталкивания в 2 раза меньше скорости
}
Тогда у нас получится, что-то вроде препятствующего прохождению барьера.