|
Помогите исправить глюки во флеш игреОбсуждение темы Помогите исправить глюки во флеш игре в разделе Технологии Flash, часть категории ДИЗАЙН И ГРАФИКА; Беда... Дело в том что когда соприкасаются два персонажа, и при прыжке одного из них возникает глюк - их разбрасывает за пределы уровня. ... |
|
Опции темы |
01.03.2012, 21:51 | #1 |
|
Беда... Дело в том что когда соприкасаются два персонажа, и при прыжке одного из них возникает глюк - их разбрасывает за пределы уровня. Помогите кому не сложно, заранее спасибо.
//массив с платформами var boxes = []; //каждая платформа при старте вызывает эту функцию и передаёт себя как параметр function addBox(obj) { boxes.push(obj); } var grav = 0.75; //начальная скорость прыжка var jumpSpeed = -12; //шаг по Х var speedX = 5; //шаг по Y var speedY = 0; //максимальная скорость падения var maxSpeedY = 25; var grav_2 = 0.75; //начальная скорость прыжка var jumpSpeed_2 = -11.9; //шаг по Х var speedX_2 = 5; //шаг по Y var speedY_2 = 0; //максимальная скорость падения var maxSpeedY_2 = 25; //половина ширины персонажа //var hhx = (hero.p1._x - hero.p3._x + hero.p1._width / 2 + hero.p3._width / 2) / 2; //половина высоты персонажа //var hhy = (hero.p2._y - hero.p4._y + hero.p2._height / 2 + hero.p4._height / 2) / 2; //половина ширины персонажа //var hhx_2 = (hero_2.t1._x - hero_2.t3._x + hero_2.t1._width / 2 + hero_2.t3._width / 2) / 2; //половина высоты персонажа //var hhy_2 = (hero_2.t2._y - hero_2.t4._y + hero_2.t2._height / 2 + hero_2.t4._height / 2) / 2; //отображает состояние прыжка var jump = false; //отображает состояние удара var shoot = false; //отображает состояние прыжка var jump_2 = false; //отображает состояние удара var shoot_2 = false; var p1camx var p1camy var p2camx var p2camy player1_mc.setMask(p1mask_mc) player2_mc.setMask(p2mask_mc) cameraRot = 0 p1x = _root.player1_mc.char1_mc._x p1y = _root.player1_mc.char1_mc._y p2x = _root.player2_mc.char2_mc._x p2y = _root.player2_mc.char2_mc._y split._yscale = 0 Key.addListener(this); onKeyDown = function () { //прыгаем //if (Key.isDown(Key.UP) && !jump && !shoot) { //jump = true; //speedY = jumpSpeed; //} //if (Key.isDown(87) && !jump_2 && !shoot_2) { //jump_2 = true; //speedY_2 = jumpSpeed_2; //}//87-w //бъём if (Key.isDown(77) && !jump && !shoot) { shoot = true; _root.player1_mc.char1_mc.gotoAndStop(4); _root.player1_mc.char1_mc.body.gotoAndPlay(2); }//32-space 188 - б if (Key.isDown(86) && !jump_2 && !shoot_2) { shoot_2 = true; _root.player2_mc.char2_mc.gotoAndStop(4); _root.player2_mc.char2_mc.body_2.gotoAndPlay(2); _root.player1_mc.char2_mc.gotoAndStop(4); _root.player1_mc.char2_mc.body_2.gotoAndPlay(2); }//86-v }; function stepHero() { //смещение фона вместо персонажа //_x = -(hero._x - 300); //_y = -(hero._y - 400); //смещение очков за персонажем //ochki._x= hero._x -100; //ochki._y= hero._y - 100; ///// //смещение очков за персонажем //ochki_2._x= hero_2._x - 100; //ochki_2._y= hero_2._y - 100; ///// if (!shoot) { //смещаемся влево/вправо if (Key.isDown(Key.LEFT)) { _root.player1_mc.char1_mc._xscale = -100; p1x -= (jump) ? speedX * 1 : speedX; } else if (Key.isDown(Key.RIGHT)) { _root.player1_mc.char1_mc._xscale = 100; p1x += (jump) ? speedX * 1 : speedX; } } if (!shoot_2) { //смещаемся влево/вправо if (Key.isDown(65)) { _root.player2_mc.char2_mc._xscale = 27; _root.player1_mc.char2_mc._xscale = 27; p2x -= (jump_2) ? speedX_2 * 1 : speedX_2; } else if (Key.isDown(68)) { _root.player2_mc.char2_mc._xscale = -27; _root.player1_mc.char2_mc._xscale = -27; p2x += (jump_2) ? speedX_2 * 1 : speedX_2; }//65-a 68-d } //применяем по цепочке: гравитация -> скорость -> _y speedY += grav; speedY = (speedY > maxSpeedY) ? maxSpeedY : speedY; p1y += speedY; speedY_2 += grav_2; speedY_2 = (speedY_2 > maxSpeedY_2) ? maxSpeedY_2 : speedY_2; p2y += speedY_2; //проверка на пересечение с платформами checkHitPlatform(); checkHitPlatform_2(); //if(p1y > groundY) { //p1y = groundY; //speedY = 0; //jump = false; //} //if(p2y > groundY) { //p2y = groundY; //speedY_2 = 0; //jump_2 = false; //} if (!shoot) { if (jump) { //в позу полёта _root.player1_mc.char1_mc.gotoAndStop(3); } else { if (oldX != _root.player1_mc.char1_mc._x) { //если позиция по Х изменилась - в позу хотьбы _root.player1_mc.char1_mc.gotoAndStop(2); } else { //иначе - по стойке смирно _root.player1_mc.char1_mc.gotoAndStop(1); } } if (!shoot_2) { if (jump_2) { //в позу полёта _root.player1_mc.char2_mc.gotoAndStop(3); _root.player2_mc.char2_mc.gotoAndStop(3); } else { if (oldX_2 != _root.player2_mc.char2_mc._x) { //если позиция по Х изменилась - в позу хотьбы _root.player1_mc.char2_mc.gotoAndStop(2); _root.player2_mc.char2_mc.gotoAndStop(2); } else { //иначе - по стойке смирно _root.player1_mc.char2_mc.gotoAndStop(1); _root.player2_mc.char2_mc.gotoAndStop(1); } } } oldX = _root.player1_mc.char1_mc._x; oldX_2 = _root.player2_mc.char2_mc._x; } } onEnterFrame = function () { stepHero(); //if (Key.isDown(Key.LEFT)) { p1x -= 3 } //if (Key.isDown(Key.RIGHT)) { p1x += 3 } if (Key.isDown(Key.UP)&& !jump && !shoot) { jump = true; speedY = jumpSpeed; speedY += grav; speedY = (speedY > maxSpeedY) ? maxSpeedY : speedY; p1y += speedY;} //if (Key.isDown(Key.DOWN)) { p1y += 3 } // player 2 //if (Key.isDown(65)) { p2x -= 3 } //if (Key.isDown(68)) { p2x += 3 } if (Key.isDown(87)&& !jump_2 && !shoot_2) { jump_2 = true; speedY_2 = jumpSpeed_2; speedY_2 += grav_2; speedY_2 = (speedY_2 > maxSpeedY_2) ? maxSpeedY_2 : speedY_2; p2y += speedY_2; } //if (Key.isDown(83)) { p2y += 3 } // w = 87 // a = 65 // s = 83 // d = 68 distX = (p2x - p1x) * 720/1280 distY = (p2y - p1y) distance = Math.sqrt((distX*distX)+(distY*distY)) cameraRot = (-Math.atan2(distX, distY)/(Math.PI/180)) //if (distance < 150) { _root.player2_mc.char1_mc._x = _root.player1_mc.char1_mc._x = p1x _root.player2_mc.char2_mc._x = _root.player1_mc.char2_mc._x = p2x _root.player2_mc.char1_mc._y = _root.player1_mc.char1_mc._y = p1y _root.player2_mc.char2_mc._y = _root.player1_mc.char2_mc._y = p2y //player1_mc.char1_mc._x = player1_mc._x*-1 + 640 //player1_mc.char1_mc._y = player1_mc._y*-1 + 180 //player1_mc._x = player1_mc.char1_mc._x - 640 if (distance < 360) { //cameraRot = 0 p1mask_mc._y = p2mask_mc._y = 720 p1mask_mc._rotation = 180 p2mask_mc._rotation = 0 p1camx = ((player1_mc.char1_mc._x + player2_mc.char2_mc._x)/2)-640 p1camy = ((player1_mc.char1_mc._y + player2_mc.char2_mc._y)/2)-360 if (split._yscale < 10) { split._yscale = 0 } else if (split._yscale > 90) { split._yscale = 90 } else if (split._yscale > 0) { split._yscale -= (100-split._yscale)/3 } else { split._yscale = 0 } } else { p1mask_mc._y = 360 p2mask_mc._y = 360 offsetX = 640 offsetY = 360 angle = (cameraRot)*Math.PI/180 ex = 0 ey = 180 ex2 = Math.cos(angle)*ex-Math.sin(angle)*ey ey2 = Math.cos(angle)*ey+Math.sin(angle)*ex p1camx = player1_mc.char1_mc._x-offsetX+(ex2 * (1280/720)) p1camy = player1_mc.char1_mc._y-offsetY+ey2 p2camx = player2_mc.char2_mc._x-offsetX-(ex2 * (1280/720)) p2camy = player2_mc.char2_mc._y-offsetY-ey2 if (Key.isDown(79)) { cameraRot -- } if (Key.isDown(80)) { cameraRot ++ } p1mask_mc._rotation = cameraRot + 180 p2mask_mc._rotation = cameraRot if (split._yscale > 90) { split._yscale = 100 } else { split._yscale += (100 - split._yscale) / 5 } } split._rotation = cameraRot player1_mc._x = p1camx/-1 player1_mc._y = p1camy/-1 player2_mc._x = p2camx/-1 player2_mc._y = p2camy/-1 } function checkHitPlatform(){ //перебираем все платформы и проверяем пересечение с персонажем с учётом того, //в какую сторону он смотрит var i = boxes.length; while (i--) { var curB = boxes[i]; if (curB.hitTest(_root.player1_mc.char1_mc.p1)) { //контакт справа if (_root.player1_mc.char1_mc._xscale > 0) { p1x = curB._x - curB._width / 2 - 25; } else { p1x = curB._x + curB._width / 2 + 25; } } else if (curB.hitTest(_root.player1_mc.char1_mc.p2)) { //контакт снизу jump = false; speedY = 0; p1y = curB._y - curB._height / 2 - 50; } else if (curB.hitTest(_root.player1_mc.char1_mc.p3)) { //контакт слева if (_root.player1_mc.char1_mc._xscale > 0) { p1x = curB._x + curB._width / 2 + 65; } else { p1x = curB._x - curB._width / 2 - 65; } } else if (curB.hitTest(_root.player1_mc.char1_mc.p4)) { //контакт сверху speedY = 0; // как вариант: //speedY *= -1; p1y = curB._y + curB._height / 2 + 25; if(curB.speed > 0) { p1y += curB.speed; } } } } function checkHitPlatform_2(){ //перебираем все платформы и проверяем пересечение с персонажем с учётом того, //в какую сторону он смотрит var i = boxes.length; while (i--) { var curB = boxes[i]; if (curB.hitTest(_root.player2_mc.char2_mc.t1)) { //контакт справа if (_root.player2_mc.char2_mc._xscale > 0) { p2x = curB._x - curB._width / 2 - 60; } else { p2x = curB._x + curB._width / 2 + 60; } } else if (curB.hitTest(_root.player2_mc.char2_mc.t2)) { //контакт снизу jump_2 = false; speedY_2 = 0; p2y = curB._y - curB._height / 2 - 60; } else if (curB.hitTest(_root.player2_mc.char2_mc.t3)) { //контакт слева if (_root.player2_mc.char2_mc._xscale > 0) { p2x = curB._x + curB._width / 2 + 40; } else { p2x = curB._x - curB._width / 2 - 40; } } else if (curB.hitTest(_root.player2_mc.char2_mc.t4)) { //контакт сверху speedY_2 = 0; // как вариант: speedY *= -1; p2y = curB._y + curB._height / 2 + 60; if(curB.speed > 0) { p2y += curB.speed; } } } }; |
|
22.04.2012, 04:46 | #2 |
|
Обычно русские разработчики делают так: Это не баг, это ФИЧА!
|
|
22.04.2012, 05:18 | #3 |
|
bratmaxim,
многа букаф, вряд ли кто то будет разбираться... Добавлено через 15 секунд bratmaxim, многа букаф, вряд ли кто то будет разбираться... Последний раз редактировалось MaxSheff; 22.04.2012 в 05:18.. Причина: Добавлено сообщение |
|
22.04.2012, 11:23 | #4 |
|
Актуален ли флеш?
Если Adobe уже отказывается от него, специально для перевода флеш сайтов в HTML5 + JavaScript сделали редактор ... |
|
23.04.2012, 02:37 | #5 |
|
maxefect, пока флеш актуален. Adobe отказывается не от флеш, а от разработки его под мобильные устройства. У флеша в любом случае будет своя ниша на рынке, взять хотя бы флеш игры, которые имеют огромную популярность)
|
|
23.04.2012, 15:17 | #6 |
|
Ну, а как кто там? Vimeo перевела свой плеер на HTML5
|
|
24.04.2012, 01:01 | #7 |
|
maxefect, не хочу спорить на эту тему, все равно что спорить, что лучше, Win или Linux, PC или Mac, 3D Max или Maya=)
|
|
24.04.2012, 14:42 | #8 |
|
Да =)
Но ведь, например, ASP эволюционировал в ASP.Net Почему бы и "Флешу" не сгинуть, а на его месте поставить, что то по новее и по круче! Одно я знаю: в IT все стремительно, быстро развивается - так что кто его знает, что придумают еще ... |
|
25.04.2012, 02:59 | #9 |
|
Может быть, может быть. Глядишь и html 5 сгинет... приходится подстраиваться под время
|
|
25.04.2012, 14:27 | #10 |
|
Хм... HTML5 еще даже не везде есть
Он только развивается, хотя давно придуман! Но к 2013 году по редакции группы разработчиков на HTML5 уже должны полностью перейти |
|
Метки |
flash платформер глюки |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка в PHP-скрипте, помогите исправить | Dead_Angel | ASP, Perl, PHP и MySQL | 6 | 24.06.2011 00:39 |
Некорректно работает код. Помогите исправить! | denicko | HTML, CSS, JavaScript | 5 | 20.10.2010 16:06 |
Глюки с table height 100%. И у вложенной, и у основной. Помогите. | volFernion | HTML, CSS, JavaScript | 2 | 15.09.2009 18:05 |
Помогите исправить глюк | bumbarashka | HTML, CSS, JavaScript | 0 | 29.01.2007 00:48 |
Помогите отловить глюки в игре | puas | Технологии Flash | 4 | 11.10.2004 16:23 |
Реклама на форуме
Условия размещения рекламы
Биржа ссылок
Заработай на сайте!
|