[6]: Ускорение

Приветствую вас, дорогие читатели :) Сегодня расскажу вам как реализовать ускорение объекта в action script 3.0. Не всё же время объектам двигаться с одной скоростью :D  Для этого сначала мы создаём клип sharik на сцене и задаём 2 переменных:

var skorost = 0.1;
var uskorenie = 0.11;

Что они значат я думаю понятно :) транслит рулит :D  Далее мы пишем следующий код:

Тут значит мы в каждом кадре выполняем функцию а. В ней мы переменную скорости увеличиваем на величину ускорения,  и далее шарик по координате у меняем на величину скорости. Так как скорость увеличивается в каждом кадре на 0.11, то и изменение координаты шара в каждом шаре увеличивается соответственно, что и будет являться движением шара с ускорением. Это не строго математический, но достаточный метод реализации ускорения в action scrip 3.0 :)
Чтобы шарик что-то делал когда достигает границы экрана, и чтобы его скорость не увеличивалась бесконечно – мы добавляем условия.

Если координата шара по y<=0, то координату шарика по у мы меняем на 500, т.е. в самый низ экрана.  Если скорость шара больше 4, то мы опять её делаем равной 4.

Обо всём этом (и не только этом) смотрите в видеоуроке ниже:

Исходник: yadi.sk/d/NNxUYMd4F48Y7
Код ActionScript 3.0 из урока:

Всё подробно рассказано в видео :) Если будут какие-либо вопросы, пишите в комментариях к видео. Надеюсь, данный урок по реализации скорости в action script 3.0 в программе adobe flash, поможет вам в разработке игр. :)

Комментарии
  1. Егор

    Попытался реализовать ускорение через управление клавиатурой. Сначала скорость шара == 1 (без ускорения). При нажатой кнопке “А” даю ускорение +=uskorenie
    Решил при отпускании кнопки возвратить скорость шару ==1, но последнее не срабатывает. В чем ошибка? Ниже прилагаю код. Спасибо за уроки.

    import flash.events.Event;
    import flash.events.KeyboardEvent;

    var skorost = 0.1;
    var uskorenie = 0.11;
    stage.addEventListener(Event.ENTER_FRAME, f_a);
    function f_a (e:Event) {
    skorost == 1;
    sharik.y -=skorost;
    if (sharik.y 4) {
    skorost = 4;
    }
    }
    stage.addEventListener (KeyboardEvent.KEY_DOWN, f_down);
    function f_down (e:KeyboardEvent){
    if (e.keyCode == 65) {
    skorost +=uskorenie;
    }
    }
    stage.addEventListener (KeyboardEvent.KEY_UP, f_up);
    function f_up (e:KeyboardEvent){
    if (e.keyCode == 65) {
    skorost == 1;
    }
    }

    • admin

      тут несколько ошибок. вот вариант:

      var skorost = 1;
      var uskorenie = 0.11;

      stage.addEventListener(Event.ENTER_FRAME, f_a);
      function f_a (e:Event) {
      sharik.y -= skorost;
      //trace(sharik.y, 'скорость = ', skorost);
      if (skorost > 4) {
      skorost = 4;
      }
      }

      stage.addEventListener (KeyboardEvent.KEY_DOWN, f_down);
      function f_down (e:KeyboardEvent){
      if (e.keyCode == 65) {
      skorost +=uskorenie;
      //trace('нажата кнопка А');
      }
      }

      stage.addEventListener (KeyboardEvent.KEY_UP, f_up);
      function f_up (e:KeyboardEvent){
      if (e.keyCode == 65) {
      skorost = 1;
      //trace('отжата кнопка А');
      }
      }

      Но такой вариант управления с клавиатуры плохой, для обучения норм, но для игр нет. Ка буду делать дудл джап, хотя нет, пинг-понг! прям в первой игре и покажу как делать нормальное клавиатурное управление. Подсказка: KeyboardEvent.KEY_DOWN и KeyboardEvent.KEY_UP используются только для регистрации факта нажатия, но не для действия, т.е. для изменения переменных на true/false; Вообщем, в пинг-понге разберу.:)

      • Егор

        С Новым 2014 годом!
        Спасибо за рабочий пример. Буду ждать на пинг-понг. :)
        ——
        P.S.Заметил, что в коде, который я вложил в коммент, исчезли некоторые символы. Программный код брал в теги .

Добавить комментарий для Егор Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">