PDA

Просмотр полной версии : Как сделать прыжок?


Джерк
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);//скорость

}