Просмотр полной версии : Столкновение, мини искуствинный интелект
Доброго времени суток, всем.
у меня вопрос возник, скажем, так: у меня есть мувик "S"(полное название Solider) к нему прикреплены мувики "GFC" и "HP"
(т.е. heathPlayer), короче к делу:
1.я хочу сделать чтоб мувик "S" двигался в хаотичном направлении (не дёргаясь, а то некоторые скрипты так делают) только по прямой, а потом, соприкасаясь, например, со стенкой он останавливался и разворачивался на месте а потом снова по прямой до следующей стенки или себе подобного).
2.и ещё надо чтоб мувик "GFC" смотрел на ближайший мувик, например "ES" что значит Enemy Solider... то чтоб он стрелял в близи я уже сделал (признаюсь, что "делетантовым" способом :rolleyes: )
но хотелась бы чтоб стрелял не в абсолютно прямом направлении, а слегка коса, т.е. первый снаряд летел на 1-3 градуса влево или право а другой наоборот...
- - - - - - - - - - - - -
ах, да и ещё, извиняюсь заранее за вопрос не по теме но:
3. я прикрепил мувик "GFC" к "S" с помощью:
with (_root.GFC) {
_x = this._x;
_y = this._y;
}
но он при движении не срабатывает, в чём засада??
alexcon314
29.10.2007, 14:02
Если плотность лексических, грамматических и орфографических ошибок в вашем посте такая же как в вашем коде, то засада плотная..
.........
срочно читать книги.
да не обращайте внимания на орфографические ошибки...просто если я печатю на клавеатуре то 70-80% совершу ошибку...
- - - - - - - - - - - - - - - -
давайте не будем уходить от темы
terbooter
29.10.2007, 15:24
После третьего прочтения я закипел.
Может разобъете вопросы по пунктам и поясните подробнее.
Enemy Solider это от слова solid ? -))
есть несколько муви клипов:
1.Solider, Instanse name: S;
2.GunFC, Instanse name: GFC; //это оружие муви клипа Solider
3.heathPlayer, Instanse name: HP; //это полоса жизней муви клипа Solider
* * *
4.EnemySolider, Instanse name: ES; //это враг
5.GunFCE, Instanse name: GFCE; //это оружие врага
6.HeathEnemy, Instanse name: HE; //это полоса жизней врага
думаю сейчас стало понятней...
alexcon314
29.10.2007, 23:16
>>просто если я печатю на клавеатуре то 70-80% совершу ошибку
код вы на чем печатаете?
...............
срочно читать книги. без них никуда.
уверен, ваш проект заслуживает внимания, так не топите его
Жень Шень
30.10.2007, 12:39
Да простят меня модераторы за ...
Но, как можно печатая слово СДЕЛАТЬ, ткнуть в клавишу З вместо С!!!
Ладно бы рядом стояли. И что пенять на клавИатуру, если грамматика хромает. А может и ActionScript прихрамывет?
SmallFlasher
30.10.2007, 13:58
1. Рандом. Когда сталкивается- ротатион+=мат.флур(мат.рандом*360)
движение в нужную сторону- _икс+=мат.кос(ротатион) _игрик+=син(ротатион)
2. снова рандом
3. Где ты этот код поставил? должен стоять в онЭнтерФрейм
И чё вы на него гоните, ну плохо в школе язык учил или невнимательный. Я тоже дофига ошибок делаю.
спасиб! SmallFlasher!!!
онЭнтерФрейм - я так и делал, просто я случайно забыл место Load поставить EnterFrame...
_rotation+=math.флур(math.рандом*360) - я чёто не понял про флур и рандом
_x +=math.кос(_rotation) _y+=син(_rotation)
так?
а что значит кос? и син?
флур чтото знакомое но непомню как пишеться...
я бы на месте модераторов уже давно создал бы кунсткамеру. редчайшие экспонаты пропадают... вот эта вот фраза про "что значит кос? и син?" - просто топ недельного хит-парада!
alexcon314
31.10.2007, 09:19
я бы на месте модераторов уже давно создал бы кунсткамеру. редчайшие экспонаты пропадают... вот эта вот фраза про "что значит кос? и син?" - просто топ недельного хит-парада!
поддерживаю предложение
своевременно, зрело, жизненно
Я бы посоветовал товарищу SmallFlasher не выпендриваться и написать нормальный код без транслитерации.
_rotation+=Math.floor(Math.random*360);
_x +=Math.cos(_rotation);
_y +=Math.sin(_rotation);
Кажись тут ещё скорость надо указать :umnik2:
Вроде надо в к параметрам getBounds() писать
короче, люди я эту тему создал но для того чтоб обсуждали ошибки, и не о создании кунсткамеры!!! ):(
я всёж спросил как это сделать... лучше помогите...
alexcon314
31.10.2007, 11:43
попробуйте помочь человеку который пишет
"Вроде надо в к параметрам getBounds() писать"
при всем желании ничего не получается.
...
я ещё не проверял этот код
я бы на месте модераторов уже давно создал бы кунсткамеру. редчайшие экспонаты пропадают... вот эта вот фраза про "что значит кос? и син?" - просто топ недельного хит-парада!
для этого баш.орг =)
я не в прямом смысле говорил о getBounds ()
with (_root.ES) {
if (_root.S.hitTest(getBounds(_root).xMax, _y, true)) {
_x -= 2;
}
} //конечно это не весь код...
что-то типа этого
короче, люди я эту тему создал но для того чтоб обсуждали ошибки, и не о создании кунсткамеры!!! ):(
я всёж спросил как это сделать... лучше помогите...Ваши проблемы, это ваши проблемы, отвечать вам здесь ни кто не обязан, но раз уже люди решили помочь, то они хотят читать нормальный текст, а не мутировавший. Поэтому начинайте проверять свой текст на ошибки, а не отмахиваться целью вашего сюда прихода, она интересует только вас, остальные без нее спокойно проживут и дальше.
Draw, it's specially 4 u! (может на английском лучше будем общаться?)=))
Math.floor - это такой зверь, который берет число и округляет его в меньшую сторону, например:
var tvayochislo:Number = 3,2444444444 ;
var celoechislo:Number = Math.floor(tvayochislo);
Функция округлит tvayochislo и ты получишь celoechislo = 3!
"рандом" - тебе вернет случайное число.
А "син" и "кос" - это геометрия сплошная...там углы, радианы и прочие стра-а-ашные звери...
2Draw
У вашей игры я полагаю планируется вид сверху ?
Вот как вариант хаотичного движения, правда он больше подходит тараканам =)
AS1
border_rotation = 0;
Time_move = -0.01;
Control_turn = 1;
to_speed_up_turn = 0;
this.createEmptyMovieClip("mc", 1);
with (this.mc) {
lineStyle(2, 0x000000, 100);
beginFill(0x6633CC);
moveTo(-5, -5);
lineTo(-5, -5);
lineTo(5, -5);
lineTo(5, 5);
lineTo(-5, 5);
endFill();
}
this.mc._x = 275;
this.mc._y = 200;
this.mc._rotation = -90;
this.mc.onEnterFrame = function() {
with (this) {
Time_move += 0.1;
if (Time_move>=border_rotation) {
border_rotation = int(Math.random()*4);
Time_move = 0;
}
if (to_speed_up_turn<border_rotation) {
to_speed_up_turn += 0.05;
}
if (to_speed_up_turn>border_rotation) {
to_speed_up_turn -= 0.05;
}
//
if (Control_turn == 1) {
_rotation += (to_speed_up_turn*2);
if (border_rotation == 1) {
Control_turn = 2;
}
}
//
if (Control_turn == 2) {
_rotation -= (to_speed_up_turn*2);
if (border_rotation == 3) {
Control_turn = 1;
}
}
_y += 4*Math.sin(this._rotation*(Math.PI/180));
_x += 4*Math.cos(this._rotation*(Math.PI/180));
////////////////////////////
if (_x<0) {
_x = 550;
}
if (_x>550) {
_x = 0;
}
if (_y<0) {
_y = 400;
}
if (_y>400) {
_y = 0;
}
}
};
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.