![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 59
|
Есть главный герой, есть монстры (вид сверху), нужно сделать так что бы монстры постепенно шли к главному герою и были к нему всегда лицом. Вообщем вот как я это сделал:
Код на фрейме //Вызываем функцию создания монстров.
this.onEnterFrame = function() {
bot_create();
};
//Функция создает 20 монстров помещая их на карту в случайном месте.
var j = 0;
function bot_create() {
for (j; j<20; j++) {
num++;
name = "bot"+num;
this.attachMovie("bot", name, num);
_root[name]._x = 1280*Math.random();
_root[name]._y = 960*Math.random();
}
}
stop();
this.onEnterFrame = function() {
//Смотрим как далеко монстр от героя
if (Math.sqrt(Math.pow(this._x-_root.hero._x, 2)+Math.pow(this._y-_root.hero._y, 2))<50) {
//При приблежении монстра переходим на фрейм Attack
this.gotoAndPlay("attack");
} else {
//Если монстр далеко от героя
this.gotoAndStop("move");
bot_speed = 2;
//Разворачиваем монстра лицом к герою
ang = Math.atan2(this._y-_root.hero._y,this._x-_root.hero._x)*180/Math.PI;
this._rotation = ang;
//Заставляем его двигаться в нужном направлении
this.xmov = bot_speed*Math.cos(ang);
this.ymov = bot_speed*Math.sin(ang);
this._x += this.xmov;
this._y += this.ymov;
}
};
stop();
this.onEnterFrame = function() {
//Смотрим как далеко монстр от героя
if (Math.sqrt(Math.pow(this._x-_root.hero._x, 2)+Math.pow(this._y-_root.hero._y, 2))>50) {
//Если далеко то переходим на движение
this.gotoAndPlay("move");
} else {
//Если близко то все время лицом к герою и отнимаем здоровье
ang = Math.atan2(this._y-_root.hero._y, this._x-_root.hero._x)*180/Math.PI;
this._rotation = ang;
hero_health-=1
}
};
1) Когда герой стоит на месте то монстры нормально двигаются к нему, когда герой начинает двигаться то монстры творят что-то странное, или начинают ходить кругами или дрыгаться в разных направлениях. 2) Если поставить высокую скорость монстрам то при прриближении к герою они дрыгаются, но ооканчательно (до атакующей позиции), приблизиться не могут 3) Если кол-во монстров на экране приблежается к 20 то игра начинает тормазить, при 100 монстрах пришлось жать CTRL+ALT+DEL Вообщем что я не так сделал и как это исправить. |
|
|||||
|
Banned
[+1 08.05.08]
[+4 14.04.08] [+1.3 02.05.08] Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
|
а покажи сам примерчик..
|
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
"Вложение не указана(о) или не существует. Если вы уверены, что использовали правильную ссылку, свяжитесь с администрацией"
|
|
|||||
|
Регистрация: Oct 2006
Сообщений: 395
|
пользуйся
setInterval(anim, 10); и function anim() { } это ускорит выполнение + храни весь код в одном кадре не муви клипа. в блоке №2 у тебя анг в градусах, а sin и cos работают с радианами. Для удобства работай с радианами, а в градусы переводи только для поворота самого мувика. |
|
|||||
|
Banned
[+1 08.05.08]
[+4 14.04.08] [+1.3 02.05.08] Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
|
ааа помню у меня тоже дергалось...
вроде, если не подводит память, округляй числа.. ![]() |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 59
|
Цитата:
Попробывал Цитата:
Цитата:
![]() |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Цитата:
PS Если ты их партиями собираешься выпускать, то тогда никаких проблем с количеством быть не должно. |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 59
|
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 15:09. |
|
|
« Предыдущая тема | Следующая тема » |
|
|