Форум 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=170116)

hellopaso 18.10.2011 23:59

движение по грид
 
ребята,

помогите пожалуйста

делаю такую игру
http://www.king.com/intermission_vir...89&action=play


все получается, только не знаю как сделать движение врагов.

Код AS3:

 
private function handleCreatures():void
                {
 
                        var heroPoint:Point = new Point(hero.x, hero.y);
 
                        for (var i:int = 0; i < enemies.length; i++) {
 
                                var e:Enemy = enemies[i] as Enemy;
 
                                var ltg:Point = gameContainer.localToGlobal(new Point(e.x, e.y)) as Point;
 
                                if (isOnStage(ltg)) {
 
 
                                        var enemyPoint:Point = new Point(e.x, e.y);
 
                                        var diffPoint:Point = heroPoint.subtract(enemyPoint);
                                        diffPoint.normalize(1);
 
                                        tryToMoveActor(e, diffPoint.x, diffPoint.y, 1);
 
 
                                }
                        }
                }


Код AS3:

 
private function tryToMoveActor(e:Enemy, xV:Number, yV:Number, speed:Number):void
                {
                        /// узнай новую позицию
                        var nextTablePos:Point = new Point();
                        nextTablePos.x = Math.floor((e.x + xV * speed) / MainSettings.CELL_SIZE);
                        nextTablePos.y = Math.floor((e.y + yV * speed) / MainSettings.CELL_SIZE);
 
                        /// если кто то уже занимает место
                        if ((table[nextTablePos.y] && table[nextTablePos.y][nextTablePos.x] is IActor)) {
 
 
                                if (IActor(table[nextTablePos.y][nextTablePos.x]) != e) {
 
                                        return;
                                }
 
 
                        }
 
                        e.x += xV * speed;
                        e.y += yV * speed;
 
                        e.updateTablePos();
 
 
 
                        putItemToTable(e);
                        removeHeroFromTable(e);
 
 
 
 
                }

Код AS3:

private function putItemToTable(actor:IActor):void 
                {
                        table[actor.yy][actor.xx] = actor;;
                }

Код AS3:

 
private function removeItemFromTable(actor:IActor):void
                {
                        if (table[actor.yy] && table[actor.yy][actor.xx] == actor) {
 
                                table[actor.yy][actor.xx] = "";
                        }
                }



двигаются в правильном направлении, но стoлкиваются друг с другом


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

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