Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Нужна помощь в создании искусственного интеллекта врага (http://www.flasher.ru/forum/showthread.php?t=205750)

Stylecs94 19.12.2013 19:39

Нужна помощь в создании искусственного интеллекта врага
 
Вложений: 1
Нужна помощь в создании вражеского танка, который сам движется по игровому полю

viktorami 19.12.2013 19:41

вы опишите что ли, словами - в чем именно загвоздка логическая. так будет больше ответов имхо.

Stylecs94 19.12.2013 20:08

Нужно что-то типа такого но на as3


//массив хранит список всех противников которые бегают по сцене в данный момент
var spiders = new Array();

//добавляет паука на сцены и задаёт для него поведение
function placeSpider() {
lev++;
var d = spider.duplicateMovieClip("z" + lev, lev);

//случайным образом выбираем с какой стороны экрана ему появиться
if (Math.random() < .5) {
d._x = ground._x + Math.random() * ground._width;
if (Math.random() < .5) {
d._y = ground._y - d._height / 2;
} else {
d._y = ground._y + ground._height + d._height / 2;
}
} else {
d._y = ground._y + Math.random() * ground._height;
if (Math.random() < .5) {
d._x = ground._x - d._width / 2;
} else {
d._x = ground._x + ground._width + d._width / 2;
}
}

//первоначальный поворот на цель и определение скорости
var dx = hero._x - d._x;
var dy = hero._y - d._y;
d.a = Math.atan2(dy, dx);
d._rotation = d.a / Math.PI * 180;
d.speed = Math.random() * 2 + 2;

//поведение противника
d.onEnterFrame = function() {
//смещается туда куда смотрит
this._x += this.speed * Math.cos(this.a);
this._y += this.speed * Math.sin(this.a);

//постоянно корректирует своё направление движения на главного героя
var dx = hero._x - this._x;
var dy = hero._y - this._y;
this.a = Math.atan2(dy, dx);
this._rotation = this.a / Math.PI * 180;

//проверка на достижение цели
var dist = Math.sqrt(dx * dx + dy * dy);
if (dist < 25 && !placed) {
//запустить спецэффект
placeBlood();
//запустить клип с сообщением о проигрыше
//в этом примере не описан, но можете иметь ввиду
_parent.black.play();
delete this.onEnterFrame;
}
};
//добавляем новосозданного паука в список
spiders.push(d);
}

//функция удаления паука из списка противников
//вызывается при попадании пули
function removeSpider(s) {
var i = spiders.length;
while(i--) {
var curS = spiders[i];
if(curS == s) {
//удаляём поведение, т.к. мёртвые уже ничего не решают
delete curS.onEnterFrame;
spiders.splice(i, 1);
}
}
}

in4core 19.12.2013 20:20

Так возьмите этот код и перепешите под AS3 - разница не существенная

viktorami 19.12.2013 20:25

вот вот. я это же хотел сказать. шутить изволите) у вас вон уже только в комментариях вся логика)

Akopalipsis 19.12.2013 20:26

Начните с самого простого, создайте паука и заставьте его хотя бы просто поворачиваться.
Потом в сторону курсора, потом чтобы двигался. И если что не получается, спрашивайте.


Часовой пояс GMT +4, время: 15:52.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.