Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Как сделать прыжок? (http://www.flasher.ru/forum/showthread.php?t=56589)

Джерк 03.04.2004 16:42

Как сделать прыжок?
 
Как сделать прыжок в игре путем программирования?

Dindin 04.04.2004 02:07

Куда прыгать будем? (т.е. уточни вопрос)
:)

AleXNoD 04.04.2004 12:59

Прыжки во флэше - это моя специальность :cool:

В объект Movie Clip вставляешь скрипт:

Код:

onClipEvent (load) {
        H = "число";
        G = "число";
        speed = -H;
       
}
onClipEvent (enterFrame) {
        if (Key.isDown(Key.UP) || (!Key.isDown(Key.UP) && speed>-H)) {
                _y += speed;
                speed += G;
                if (speed>H) {
                        speed = -H;
                }
        }
}

Значит, здесь максимальная высота прыжка зависит от переменной "H" (в этом случае я ставил 10), а... ну сила притяжения Земли от переменной "G" (в этом случае я ставил 0.5).

В этом примере прыжок осуществляется при нажатии клавиши "UP" (т.е. ВВЕРХ). Вместо "UP" можно написать другую клавишу, например SPACE (пробел) и др.

Прыжок можно сочетать с движением вправо или влево. Тогда получится прыжок в длину.

Удачи! :D

silin 04.04.2004 22:29

логичнее мне кажется прыжок определять начальной скоростью
MovieClip.prototype.jump=function(v){
this.onEnterFrame=function(){
with(this){
_y-=v;
v-=g;
if(_y>=h0){
_y=h0;
delete onEnterFrame;
}
}
}
}

g=9.81;//ускорение(надо бы на фпс поделить)
h0=mc._y;//уровень земли
Key.addListener(mc);
mc.onKeyDown=function(){
if(Key.isDown(Key.UP)) this.jump(50);//скорость
}

silin 04.04.2004 22:58

вот до кучи влево-вправо учел
MovieClip.prototype.jump=function(v,dir){//скорость, направление
var vv=v*Math.cos(Math.PI*dir/180);
var vh=v*Math.sin(Math.PI*dir/180);
this.onEnterFrame=function(){
with(this){
_y+=-vv;
_x+=vh;
vv-=g;
if(_y>=h0){
_y=h0;
delete onEnterFrame;
}
}
}
}
g=9.81;//ускорение
h0=mc._y;//уровень земли
Key.addListener(mc);
mc.onKeyDown=function(){
var dir=0;
if(Key.isDown(Key.LEFT))dir-=45;
if(Key.isDown(Key.RIGHT))dir+=45;
if(Key.isDown(Key.UP)) this.jump(50,dir);//скорость

}


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

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