Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Перестройка машины из одного ряда в другой... (http://www.flasher.ru/forum/showthread.php?t=119804)

Ralph_DiMarko 31.12.2008 14:46

Перестройка машины из одного ряда в другой...
 
Здрасте всем и вся, есть задача которую немогу решить, пример тута
по трассе едут куча машин, помимо них у игрока будет своя машина, которая не имеет никакого отношения к ним, игрок сам будет управлять своей машиной и для игрока другой код, я просто хочу сделать ну так скажем искусственный интеллект, чтоб комп сам думал когда обгонять и когда нет... одни из них едут быстро, другие медленно, так вот те которые едут быстрее они будут обгонять медляков, и всего то. Это я просто пример такой сделал, на скорую руку, чтоб как-то объяснить что хочу.
Допустим первая машина собирается обгонять вторую, к коде я рассчитал:
1. расстояние от переднего бампера первой машины, до заднего бампера второй машины (это чтобы когда уже близко, первая пошла на обгон)
2. расстояние от правой двери первой машины, до левой двери второй машины (это чтоб указать на каком расстоянии первая машины будет обгонять вторую)
3. расстояние от от заднего бампера первой машины, до переднего бампера второй машины (это считает когда машина обогнала, значение уже будет положительное и можно будет перестроится обратно в полосу).

И это все немогу сделать так чтоб считало для всех вместе.
Вот код
Код AS1/AS2:

speed = 2;
onEnterFrame = function () {
        if (distpox>=0) {
                if (distpoy>=0) {
                        k1._x += speed;
                }
        }
        if (distpox<=0) {
                if (distpo<=0) {
                        if (distpoy>=0) {
                                k1._y--;
                        }
                }
        }
        if (distpoy<=0) {
                if (distpo<=0) {
                        k1._x += speed;
                }
        }
        if (distpo>=0) {
                if (distpoo<=0) {
                        k1._y += speed;
                }
        }
        if (distpoo>=0) {
                if (distpo>=0) {
                        k1._x += speed;
                }
        }
        for (i=2; i<=2; i++) {
                distpox = (this["k"+i]._x-k1._x)-(k1._width/2+this["k"+i]._width/2);
                pox.text = distpox;
                distpoy = (k1._y-this["k"+i]._y)+(k1._height/2+this["k"+i]._height/2);
                poy.text = distpoy;
                distpo = ((k1._x-this["k"+i]._x)-k1._width/2)-this["k"+i]._width/2;
                potxt.text = distpo;
                distpoo = (k1._y-this["k"+i]._y);
        }
};

Когда пишу
Код AS1/AS2:

for (i=2;i<20;i++)
{тут все эти формулы}

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

MrXoT 07.01.2009 16:11

ну конечно цикл та на 20 останавливается....
нужно зделать так

Код AS1/AS2:

onEnterFrame = function () {
  for (i=2;i<20;i++){
      тут все эти формулы
  }
}

или попробывать интервалами
да и этот скрипт при много машин будет тормозить
лучше всего тогда использовать тайлы...

scarbo 07.01.2009 17:41

Цитата:

тайлы...
А по-подробнее...

Ralph_DiMarko 07.01.2009 21:02

"вас из дас" тайлы?

scarbo 08.01.2009 03:31

Цитата:

"вас из дас" тайлы?
Мм,я Вас не понимать,товарищ

etc 08.01.2009 13:16

tile — плитка. В играх-платформерах это обычно прямоугольный элементарный кусочек местности, например, в том же Mario весь мир состоит из тайлов. В изометрических играх это может быть гексагон.

scarbo 08.01.2009 14:28

__etc,спасибо

Ralph_DiMarko 08.01.2009 21:21

я тож понял, но это наверное другая тема...


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

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