Страница 1 из 2

Прыжок?!

Добавлено: 17 фев 2012, 19:37
Garch
Хочу создать маленькую игрушку, и персонаж должен сделать прыжок, вроде просто, но не получается. Не поможете?

Re: Прыжок?!

Добавлено: 17 фев 2012, 20:01
bodnar
конкретнее, что уже есть, что пробовал, что вышло, что должно было, исходники и прочее

Re: Прыжок?!

Добавлено: 17 фев 2012, 20:39
Garch
Ну вообщем запланировал сделать игрушку, раньше ещё такая на телефоне была, там красный шарик катится и всякие припятствия проходит...
Пока что в процессе продумывания, катание по карте примерно придумал, а вот с прыжком проблема...
пробовал так:

Код: Выделить всё

shar.y -=5;shar.y +=5;
ну или что то вроде этого, не вышло, как я и предполагал...
Потом пробовал циклом, эффект тот же...
Потом сделал таймер, и если сделать по таймеру только движение вверх, то нормально, к примеру на 5 пикселов двигается за 5 сек., если после добавить по таймеру ещё и движение вниз, он снова остается на месте...

И тут я решил, ведь я по-любому занимаюсь изобретанием велосипеда, и это делали много раз до меня, так вот, не подскажите как это осуществить?!

Re: Прыжок?!

Добавлено: 17 фев 2012, 21:03
Alazaur
Как вариант

Код: Выделить всё

shar.jumpSpeed = 15;shar.jumpStep = 0; shar.addEventListener(Event.ENTER_FRAME, goShar); function goShar(e:Event):void {    if(e.target.jumpStep == 1){        if(e.target.jumpSpeed > 0){             e.target.y -= e.target.jumpSpeed;            e.target.jumpSpeed--;        } else {            e.target.jumpStep = 2;        }    } else if(e.target.jumpStep == 2){        if(e.target.jumpSpeed < 25){             e.target.y += e.target.jumpSpeed;            e.target.jumpSpeed++;        } else {            e.target.jumpStep = 0;        }    }}
Остается только в нужный момент, по нажатию клавиши или еще там когда присвоить свойству jumpStep значение 1.

Re: Прыжок?!

Добавлено: 17 фев 2012, 21:53
Garch
Alazaur писал(а):Как вариант

Код: Выделить всё

shar.jumpSpeed = 15;shar.jumpStep = 0; shar.addEventListener(Event.ENTER_FRAME, goShar); function goShar(e:Event):void {    if(e.target.jumpStep == 1){        if(e.target.jumpSpeed > 0){             e.target.y -= e.target.jumpSpeed;            e.target.jumpSpeed--;        } else {            e.target.jumpStep = 2;        }    } else if(e.target.jumpStep == 2){        if(e.target.jumpSpeed < 25){             e.target.y += e.target.jumpSpeed;            e.target.jumpSpeed++;        } else {            e.target.jumpStep = 0;        }    }}
Остается только в нужный момент, по нажатию клавиши или еще там когда присвоить свойству jumpStep значение 1.
Впринципе рабтает, только я не пойму, почему с каждым прыжком он становится всё менее плавным?

Re: Прыжок?!

Добавлено: 17 фев 2012, 21:56
Alazaur
Garch, не должно такого быть. Во всяком случае не из-за этого кода. Может у флешки память текет?

Re: Прыжок?!

Добавлено: 17 фев 2012, 22:15
Garch

Код: Выделить всё

stage.addEventListener(KeyboardEvent.KEY_DOWN, hod); function hod(event:KeyboardEvent):void{    switch (event.keyCode)    {        case Keyboard.UP:        {            movieClip_1.jumpSpeed = 15;movieClip_1.jumpStep = 1; movieClip_1.addEventListener(Event.ENTER_FRAME, goShar);function goShar(e:Event):void {    if(e.target.jumpStep == 1){        if(e.target.jumpSpeed > 0){             e.target.y -= e.target.jumpSpeed;            e.target.jumpSpeed--;        } else {            e.target.jumpStep = 2;        }    } else if(e.target.jumpStep == 2){        if(e.target.jumpSpeed < 16){             e.target.y += e.target.jumpSpeed;            e.target.jumpSpeed++;        } else {            e.target.jumpStep = 0;        }    }}            break;        }                case Keyboard.LEFT:        {                movieClip_1.x -= 5;            break;        }        case Keyboard.RIGHT:        {                            movieClip_1.x += 5;            break;        }    }}
Вот код, может поймешь так в чем ошибка?
Это как бы пока планирование, так что не пугайся что он короткий) Потом буду пытаться сделать взаимодействие с картой) если знаешь как и это напиши)

Re: Прыжок?!

Добавлено: 18 фев 2012, 01:17
Alazaur
И оно работает? :shock:
Вот как-то так:

Код: Выделить всё

    movieClip_1.jumpSpeed = 15;    movieClip_1.jumpStep = 0;    movieClip_1.speedX = 0;    movieClip_1.speedMax = 10    movieClip_1.directionX = 0;    movieClip_1.addEventListener(Event.ENTER_FRAME, goShar);    stage.addEventListener(KeyboardEvent.KEY_DOWN, hod);    stage.addEventListener(KeyboardEvent.KEY_UP, unhod);        function hod(event:KeyboardEvent):void    {        switch (event.keyCode)        {            case Keyboard.UP:            {                if(!movieClip_1.jumpStep) movieClip_1.jumpStep = 1;                break;            }            case Keyboard.LEFT:            {                if(!movieClip_1.directionX) movieClip_1.directionX = 1;                break;            }            case Keyboard.RIGHT:            {                                  if(!movieClip_1.directionX) movieClip_1.directionX = 2;                break;            }        }    }        function unhod(event:KeyboardEvent):void {        if((event.keyCode == Keyboard.LEFT) || ( event.keyCode == Keyboard.RIGHT)) movieClip_1.directionX = 0;    }        function goShar(e:Event):void {        if(e.target.jumpStep == 1){            if(e.target.jumpSpeed > 0){                e.target.y -= e.target.jumpSpeed;                e.target.jumpSpeed--;            } else {                e.target.jumpStep = 2;            }        } else if(e.target.jumpStep == 2){            if(e.target.jumpSpeed < 15){                e.target.jumpSpeed++;                 e.target.y += e.target.jumpSpeed;            } else {                e.target.jumpStep = 0;            }        }                if(e.target.directionX == 1) {            if(e.target.speedX > -e.target.speedMax)e.target.speedX--;        } else if(e.target.directionX == 2) {            if(e.target.speedX < e.target.speedMax)e.target.speedX++;        } else {            if(e.target.speedX > 0) e.target.speedX--;            else if (e.target.speedX < 0) e.target.speedX++;        }                movieClip_1.x += e.target.speedX;    }

Re: Прыжок?!

Добавлено: 18 фев 2012, 10:39
Garch
Alazaur писал(а):И оно работает? :shock:
Ну да, почему нет?! Но я предупреждал, это только процесс планирования, так что)
Сейчас этот твой попробую)

Re: Прыжок?!

Добавлено: 18 фев 2012, 10:43
Garch
Круто) Вообще красиво) Спасибо большое)
Ещё бы хождение по карте сделать)