Создание ролевых игр (9 урок)
ИСКУСТВЕННЫЙ ИТНЕЛЕКТ
Привет. Вы никогда не задумывались, почему, когда вы играете в комп, вам не хочется, чтобы с вами в него ещё кто-то играл? Будь это друг, бабушка, младшая сестрёнка или Анфиса Чехова. Да потому что сейчас практически во всех играх присутствует ИИ. А в некоторых даже несколько(доходит до тысяч). Сейчас мы попробуем создать небольшой ИИ.
Создаём героя, которым вы будете играть, и программируем его так, чтобы тот умел двигаться по всем осям. (см. урок 1). Теперь приступаем к созданию врага, который будет бегать за героем. Нарисуем врага, преобразуем его в клип и в поле “Имя копии” назовём его vrag. Затм выделев его присвоим ему такой код:
onClipEvent (load) {
speed = 3 // скорость врага
} onClipEvent (enterFrame) {
if (_root.hero._x > this._x) { // если враг замечает что герой правее его
this._x += speed; // то враг бежит направо остальное аналогично
}if (_root.hero._x < this._x) {
this._x -= speed
}
if (_root.hero._y < this._y) {
this._y -= speed }
if (_root.hero._y > this._y) {
this._y += speed }
}
ИИ готов. Он бегает за героем, но он не поворачивается в его сторону. Сейчас мы сделаем так, чтобы враг смотрел на героя. В клипе героя пишем такой код(нужно что бы он был между фигурными скобками функции onClipEvent (enterFrame) ):
a = _root.vrag._y-_root.hero._y;
b = _root.vrag._x-_root.hero._x;
this._rotation = Math.atan2(a, b)/(Math.PI/180);
А во втором :
gotoAndPlay(1);
Всё теперь враг бегает за вами и смотрит в вашу сторону. Можно ещё добавить условие. Если враг догоняет героя, то, что-то происходит. Присваиваем клипу врага ещё один код:
onClipEvent (enterFrame) {
if (_root.hero.hitTest(this)) {// при нахождении общих точек между героем и врагом
_root.gotoAndStop(3); // ролик переходит в третий кадр на главной сцене
}
}
Все враг готов.