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

VovkaMorkovka 20.12.2006 23:57

Вращение клипа относительно вложенного
 
Здравствуйте все, я делаю игру - танки. Игра реализована так: есть клип карта. В нем лежит клип танк игрока и все остальные клипы. Мне нужно сделать так, чтобы перемещалась и вращалась сцена а танк игрока оставался на месте. Понятно, что раз я вращаю сцену, а танк находится не в ее центре, то чтоб он находился на месте относительно экрана его нужно каждый раз смещать. Вот код при помощи которого я это делаю

Код:

class Map extends MovieClip {
        var array:Array;
        var tank;
       
        //Расчет танка расстояния от центра карты
        private function countTankR(){
                return Math.sqrt(this.tank._x*this.tank._x+this.tank._y*this.tank._y);
        }
       
        function setTank(tank) {

                this.tank = tank;
        }
       
        function Map() {
                this.tank._x=0;
                this.tank._y=0;
                trace("map create");
                array = [];
        }
        function pushToArray(element) {
                trace("push to array start");
                this.array.push(element);
        }
        function getArray():Array {
                return array;
        }
        function onEnterFrame() {
               
                //Если танк может двигатся(не врезался ни во что)
                if (this.tank.needToMoveMap()) {
                        //Нахожу расстояние от центра клипа до танка
                        var r:Number=countTankR();

                        //Вычисляю координаты танка относительно экрана
                        var x1:Number=r*Math.sin(this._rotation*Math.PI/180);
                        var y1:Number=r*Math.cos(this._rotation*Math.PI/180);                                                                       
                        //Поворачиваю танк
                        this._rotation-=tank.getRotationSpeed();
                       
                        //Вычисляю координаты танка относительно экрана после вращения
                        var x2:Number=r*Math.sin(this._rotation*Math.PI/180);
                        var y2:Number=r*Math.cos(this._rotation*Math.PI/180);       
                       
                        //Вычисляю смещение отн. экрана
                        var dx:Number=x2-x1;
                        var dy:Number=y2-y1;
                       
                       
                        //Смещаю карту для того, чтобы учесть перемещение, которое получается при вращении танка
                        this._x-=dx;
                        this._y-=dy;
                       
                        //Смещаю карту для того, чтобы учесть перемещение сцены при перемещении танка
                        this._x -= this.tank.getDX();
                        this._y -= this.tank.getDY();
                }
               
        }
}

В общем что-то не работает. Подскажите кто может - что здесь не так. С уважением, Владимир

CorC 21.12.2006 10:16

тут на форуме где-то выложен был танк с башней... поробуйте поиском


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

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