Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: игра "Прыжки на батуте"
Flash Zone Forum > Macromedia Flash > Общие вопросы
HaWK
Хочу сделать игру "Прыжки на батуте"
Ну вообщем два мувиклипа:
1. Чувак который прыгает.
2. Сам Батут.

Как с помощью HitTest расщитать отскоки, гравитацию и т. д.

P.S. Не умею вводить параметры.... На сколько мне известно надо через _global....
Но как? Можно по конкретней...
Заранее спасибо
HaWK
Чё никто не знает как это сделать?
Мне просто нужно помочь с HitTest...

P.S. MustLive, хотя бы ты помоги....
/2D/
Цитата
Мне просто нужно помочь с HitTest...

проверка hitTest проходит следующим образом:

if(клип1.hitTest(клип2)){
действие
}

клип1,2- мувиклипы, которые проверяются на "пересечение"/совпадение
/2D/
Ставим на кадр и радуемся smile.gif , небольшой глюк с затуханием
Код
var V:Number = 0;//скорость
var g:Number = 1;//ускорение
this.createEmptyMovieClip("jumper",0);
jumper._x = 200;
jumper.lineStyle(1,0x000000);
jumper.moveTo(0,0);
jumper.lineTo(0,10);
jumper.lineTo(10,10);
jumper.lineTo(10,0);
jumper.lineTo(0,0);
this.createEmptyMovieClip("trampoline",1);
trampoline._x = 200;
trampoline._y = 300;
trampoline.lineStyle(1,0x000000);
trampoline.moveTo(0,0);
trampoline.lineTo(0,50);
trampoline.lineTo(50,50);
trampoline.lineTo(50,0);
trampoline.lineTo(0,0);
this.onEnterFrame = function() {
    jumper._y += V;
    V += g;
    if (jumper.hitTest(trampoline)) {
        V = -V+2*g;
        if (V>0) {
            V = 0;
        }
    }
};
MustLive
Цитата
Чё никто не знает как это сделать?

Естественно есть люди которые знают, просто они ранее не добрались до этой темы. Вот /2D/ уже как раз ответил.

Цитата
Мне просто нужно помочь с HitTest...

Данная тема уже не раз обсуждалась на форуме. К тому же в хелпе можно прочесть об использовании HitTest. Посмотри пример /2D/.

Цитата
MustLive, хотя бы ты помоги....

Помогу как только доберусь до твоей темы. А у меня с каждой новой темой на форуме добавляется новая запись в список тем на которые нужно ответить (и который растёт из года в год), и ссылка на твою тему опускается все ниже. Так что нужно лишь дождаться.

P.S.

Вот вам ребята новая версия кода. С добавленным управлением прыгуном (стрелками влево и вправо). Ставьте в кадр и радуйтесь ещё больше wink.gif.

CODE
var V:Number = 0; //скорость
var g:Number = 1; //ускорение
this.createEmptyMovieClip("jumper",0);
jumper._x = 200;
jumper.lineStyle(1,0x000000);
jumper.moveTo(0,0);
jumper.lineTo(0,10);
jumper.lineTo(10,10);
jumper.lineTo(10,0);
jumper.lineTo(0,0);
this.createEmptyMovieClip("trampoline",1);
trampoline._x = 200;
trampoline._y = 300;
trampoline.lineStyle(1,0x000000);
trampoline.moveTo(0,0);
trampoline.lineTo(0,50);
trampoline.lineTo(50,50);
trampoline.lineTo(50,0);
trampoline.lineTo(0,0);
this.onEnterFrame = function() {
jumper._y += V;
V += g;
if (jumper.hitTest(trampoline)) {
V = -V+2*g;
if (V>0) {
V = 0;
}
}
};
var KbListener:Object = new Object();
KbListener.onKeyDown = function() {
switch (Key.getCode()) {
case 37:
jumper._x -= 2;
break;
case 39:
jumper._x += 2;
break;
}
}
Key.addListener(KbListener);
HaWK
/2D/, MustLive спасибо за ответы.
Цитата
Помогу как только доберусь до твоей темы. А у меня с каждой новой темой на форуме добавляется новая запись в список тем на которые нужно ответить (и который растёт из года в год), и ссылка на твою тему опускается все ниже. Так что нужно лишь дождаться.

ладна. Буду знать. laugh.gif
HaWK
Мне нужно ещё им управлять:
- Вертеть его (по часовой, против часовой)
- Чтоб можно было взлететь выше (кнопка прыжка)
- Менять позы
А также:
- Отображать очки за разные трюки
- И чтобы он был в воздухе бесконечно (т. е. замкнутый круг - прыгает и приземляется) просто в вашем примере он по тихонечку всё меньше и меньше отталкивается, а потом и вообще просто стоит на батуте)

Пожалуйста помогите! sad.gif Я с физикой во флэше не очень! dry.gif Я буду очень благодарен. sad.gif

P.S. Я подожду biggrin.gif
/2D/
Цитата
Я с физикой во флэше не очень! dry.gif

HaWK, физику во флэше нужно придумывать самому, если лень что-то придумывать, можно использовать известные науке физические формулы,чтобы получилось всё более реалестично, но для меня легче придумать что-то самому чем насиживать геморой и вспоминать "школьную физику". wink.gif
Вобщем вот тебе код , тут на клавиши "вверх"/"вниз" можно поворачивать прыгающий объект, а если нажимать "пробел" в момент соприкосновения с батутом объект будет "распрыгиваться".
Код
var V:Number = 0;//скорость вертикальная
var Vd:Number = 0;//скорость горизонтальная
var g:Number = 1;//ускорение
var W:Number = Stage.width;
var H:Number = Stage.height;
this.createEmptyMovieClip("jumper",0);
jumper._x = W/2;
jumper.lineStyle(1,0x000000);
jumper.moveTo(0,0);
jumper.lineTo(0,10);
jumper.lineTo(10,10);
jumper.lineTo(10,0);
jumper.lineTo(0,0);
this.createEmptyMovieClip("trampoline",1);
trampoline.lineStyle(1,0x000000);
trampoline.moveTo(0,0);
trampoline.lineTo(0,50);
trampoline.lineTo(W,50);
trampoline.lineTo(W,0);
trampoline.lineTo(0,0);
trampoline._y = H-trampoline._height;
this.onEnterFrame = function() {
    if (jumper._y>H) {
        jumper._x = W/2;
        jumper._y = 0;
        jumper._rotation = 0;
        V = 0;
        Vd = 0;
    }
    jumper._y += V;
    jumper._x += Vd;
    if (jumper.hitTest(trampoline)) {
        if (Key.isDown(Key.SPACE)) {
            V += g;
        } else {
            if (V>15*g) {
                V -= g;
            }
        }
        Vd = V*Math.sin(jumper._rotation*Math.PI/360);
        V = -V;
        jumper._y = trampoline._y-jumper._height;
    } else {
        V += g;
    }
};
var KbListener:Object = new Object();
KbListener.onKeyDown = function() {
    switch (Key.getCode()) {
        case 37 :
            jumper._x -= 2;
            break;
        case 39 :
            jumper._x += 2;
            break;
        case 40 :
            if (jumper._rotation>-50) {
                jumper._rotation -= 10;
            }
            break;
        case 38 :
            if (jumper._rotation<50) {
                jumper._rotation += 10;
            }
            break;
    }
};
Key.addListener(KbListener);
HaWK
БОЛЬШОЕ СПАСИБО
ВЫРУЧИЛ! laugh.gif laugh.gif laugh.gif
/2D/
пожалуйста)
HaWK
Упсс..... опять проблема...
getBounds biggrin.gif
Как сделать так чтобы он ударялся об стены. Например Чтоб он не вылетал за пределы сцены, а отскакивал.

P.S. Он в твоём примере так и наровит велетить куда подальше. Чуть - чуть не под правильным углом приземлишься всё.. он "улетел"....
HaWK
А как на счёт этого:
- Менять позы
- Отображать очки за разные трюки biggrin.gif
/2D/
Цитата
А как на счёт этого:
- Менять позы
- Отображать очки за разные трюки

ну хоть что-то ты должен сам сделать wink.gif
HaWK
не с позами и очками я сообразил уже. Просто объясни как работает getBounds. ПЖЛСТ! biggrin.gif biggrin.gif
/2D/
Цитата
Просто объясни как работает getBounds.

вот: http://www.realcoding.net/teach/ActionScri..._max_mov12.html
Проще говоря оно выдаёт переменную типа object, в которой находятся максимальные и минимальные значения х и у клипа относительно сцены или другого клипа. Сам я этим методом не пользуюсь, и зачем если есть св-ва _width,_height,_x,_y.
Вот примерно так оно выглядит: movieclip1.getBounds(movieclip2)
movieclip1- клип, чьи характеристики нужно узнать
movieclip2 - клип, относительно чего будут узнаваться характеристики
Поправьте меня если я не прав, просто этим методом не разу не пользовался, но вроде он работает так как я написал выше.
Вот пример моего кода:
Код
var _OBJ:Object=mc.getBounds(_root)
trace([_OBJ["yMax"],_OBJ["yMin"],_OBJ["xMax"],_OBJ["xMin"]])
Русская версия IP.Board © 2001-2009 IPS, Inc.