|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
[+1.3 07.08.10]
[+1.3 19.10.14] Регистрация: Jul 2009
Адрес: C-Петербург
Сообщений: 37
|
игра Танки в процессе, требуется помощь
Описание игры Танки
В центре экрана – большой танк, который отстреливается от маленьких танков. Он поворачивается за мышью и стреляет в то место, куда нажмем мышью. В момент нажатия кнопки мыши очередная пуля загружается из библиотеки, размещается под большим танком и летит по направлению к точке, где щелкнули мышкой. Перед началом игры: маленькие танки – 20 штук - помещаются в случайные места вдоль границ экрана, сначала они прозрачные. В каждый танк загружается одна пулька тоже прозрачная. Объявляются массивы размером 20 элементов: -Для хранения разности координат маленьких танков и большого танка - по оси x массив dx - по оси y массив dy - Для хранения углов разворота маленьких танков по отношению к большому танку -массив MasAngl - Для хранения глобальных значений координат пулек (относительно _root): - по оси x массив xPul,по оси y массив yPul Движение маленьких танков Движение происходит при смене кадров монтажной линейки каждого маленького танка. В каждом кадре расстояния по осям координат между большим танком и каждым маленьким сокращаются на 1/200 их начального значения. Стрельба маленьких танков Т.к. пулька вложена в клип “маленький танк” –клип mt, то ее движение также будет в направлении к большому танку(?), значит угол можно не вычислять(?), А чтобы пулька двигалась, нужно только, чтобы в каждом кадре приращение координат было больше, чем у маленького танка(?). Так и сделала, но пулька летит куда хочет Стрельба большого танка кажется, тоже глючит... Помогите разобраться! Программный код: //------Установка начальных значений------------------------------------------ spaceShip.swapDepths(9999); speed = 10; depth = 100; num = 0; nose = 50; pr = 0; MasXn = []; MasYn = []; MasAngl = []; dx = []; dy = []; // Координаты пули относительно _root xPul=[]; yPul=[]; var nameP:String=""; //--------Размещение маленьких танков перед боем ------------------------- for (num=0; num<20; num++) { _root.attachMovie("mt", "mt"+num, num); _root["mt"+num]._alpha = 0; pr = Math.floor(Math.random()*4); if (pr == 0) { MasXn[num] = -13; MasYn[num] = Math.floor(Math.random()*600); } if (pr == 1) { MasXn[num] = 720; MasYn[num] = Math.floor(Math.random()*600); } if (pr == 2) { MasYn[num] = -13; MasXn[num] = Math.floor(Math.random()*700); } if (pr == 3) { MasYn[num] = 620; MasXn[num] = Math.floor(Math.random()*700); } // Разворот маленьких танков на большой танк _root["mt"+num]._x = MasXn[num]; _root["mt"+num]._y = MasYn[num]; dx[num] = MasXn[num]-spaceShip._x; //Если маленький танк левее большого танка,dx<0.Если мал.танк правее большого, dx>0. dy[num] = MasYn[num]-spaceShip._y; // Если маленький танк выше большого танка,dy<0. Если мал.танк ниже большого, dy>0. MasAngl[num] = Math.atan2(dy[num],dx[num]); _root["mt"+num]._rotation = MasAngl[num]*180/Math.PI; dx[num] = MasXn[num]-spaceShip._x; dy[num] = MasYn[num]-spaceShip._y; nameP = "pul"+num; _root["mt"+num].attachMovie("pul","nameP",num);// загрузка пули из библиотеки _root["mt"+num].nameP._alpha=0; } num = 0; nameP=""; //---------------------------------------------------------------------------------------------------------------- _root.onEnterFrame = function() { nextMt = getTimer()+Math.floor(Math.random()*90-2); // Время, когда появится очередной маленький танк if (getTimer()>=nextMt && num<=20) { _root["mt"+num]._alpha = 100; _root["mt"+num].nameP._alpha=100; moveMt(num); num++; } }; _root.onMouseMove = function() { updateAfterEvent(); xdiff = _root._xmouse-spaceShip._x; ydiff = _root._ymouse-spaceShip._y; angle = Math.atan2(ydiff, xdiff); angle = angle*180/Math.PI; spaceShip._rotation = angle; }; _root.onMouseDown = function() { angle = spaceShip._rotation; angle = angle*Math.PI/180; depth++; name = "projectile"+depth; _root.attachMovie("projectile", name, depth); _root[name]._x = spaceShip._x+nose*Math.cos(angle); _root[name]._y = spaceShip._y+nose*Math.sin(angle); _root[name].xmov = speed*Math.cos(angle); _root[name].ymov = speed*Math.sin(angle); _root[name].onEnterFrame = function() { this._x += this.xmov; this._y += this.ymov; if (this._x<=0) { //Пуля, улетевшая влево,становится невидимой this._visible = 0; } if (this._x>=700) { //Пуля, улетевшая вправо,становится невидимой this._visible = 0; } if (this._y<=0) { //Пуля, улетевшая вверх,становится невидимой this._visible = 0; } if (this._y>=600) { //Пуля, улетевшая вниз,становится невидимой this._visible = 0; } for (var j = 0; j<20; j++) { if (_root[name].hitTest(_root["mt"+j])) { _root["mt"+j].nameP._alpha=0; _root["mt"+j].play(); //trace(_root["mt"+j]._x); dx[j] = 0; // Для остановки маленького танка dy[j] = 0; // Для остановки маленького танка _root[name]._alpha = 0; // Пуля станет прозрачной _root[name].removeMovieClip(); } } }; }; function moveMt(num) { _root["mt"+num].onEnterFrame = function() { // Если dx<0, маленький танк будет двигаться вправо. Если dx>0, то влево. _root["mt"+num]._x-=dx[num]/200; // Если dy<0, маленький танк будет двигаться вверх. Если dy>0, то вверх. _root["mt"+num]._y -=dy[num]/200; // Перевод координат пули из локальных в глобальные xPul[num]= _root["mt"+num]._x+ _root["mt"+num].nameP._x; yPul[num]= _root["mt"+num]._y+ _root["mt"+num].nameP._y; // Если пуля попадает в большой танк, слышится грохот и большой танк трясется и дымит if (spaceShip.hitTest( xPul[num],yPul[num],true)) { _root["mt"+num].nameP._alpha=0; spaceShip.play(); } d=Math.sqrt(dx[num]*dx[num]+dy[num]*dy[num]); if(d<=400){ // Начало движения пульки _root["mt"+num].nameP._x-=dx[num]/20; _root["mt"+num].nameP._y-=dy[num]/20; } // Если 10 попаданий, танк взрывается // Если маленький танк "въехал" в большой танк if (spaceShip.hitTest(_root["mt"+num]._x, _root["mt"+num]._y, true)) { this._alpha = 0; // маленький танк становится прозрачным spaceShip._alpha -= 5; _root["mt"+num].removeMovieClip(); } }; } |
|
|||||
Регистрация: Nov 2008
Адрес: Атланта
Сообщений: 1,271
|
судя по всему тебе сюда:
http://xitri.com/2009/03/19/crimsonl...ionscript.html или сюда: http://xitri.com/2009/02/27/vospomin...ie-na-cel.html как раз твой случай
__________________
Пока я жив, Вы горем обеспечены |
|
|||||
Регистрация: Dec 2009
Сообщений: 428
|
Баг:
Если выстрелить в танк, он взорвется и исчезнет. Если выстрелить в это же место еще раз, он появится.
__________________
Скажи мне кто твой друг и я скажу тебе кто твой друг Последний раз редактировалось leofit; 13.09.2010 в 11:24. |
Часовой пояс GMT +4, время: 13:31. |
|
« Предыдущая тема | Следующая тема » |
|
|