[16]: Обнаружение столкновений “Окружность-Окружность”

Приветствую вас, ребята и девчонки :) Сегодня продолжается серия уроков по обнаружению столкновений в action script 3.0. :) Расписывать подробно я  как обычно не буду, всё ооочень чётко изложено в видеоуроке. Здесь я распишу лишь алгоритм на основе которого всё работают.

При разработке игр очень важно знать о том, как обнаружить пересечение окружности с окружностью с помощью action script 3.0. Это может пригодится в таких играх как пинбол, бильярд, гольф. хоккей и т.д. В этом уроке вы научитесь писать легкий код обнаружения столкновений “окружность-окружность” ЗАВИСИМОЕ от кадров! Этот урок является подготовительным к следующему более сложному определения столкновений окружностей.

Итак,  для обнаружение столкновения “Окружность-Окружность” нам нужно сделать следующее дело:

Нам нужно найти расстояние между центрами окружностей и сравнить его с суммой радиусов этих окружностей. Если сумма радиусов больше чем расстояние, то окружности пересекаются, если наоборот, то не пересекаются.  Всё :) Картиночка ниже для наглядности.
16_1

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

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

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

Комментарии
  1. Дмитрий

    Хотел спросить, неужели нельзя эти строчки как-то упростить
    for (var i=1; i<=2; i++) {
    var circle = this["circle"+i];

    • Дмитрий

      т.е. просто по отдельности для circle1 и сircle2 расписать

      • admin

        можно, но когда у тебя будет 50 таких кругов, ты сделаешь именно так :) чтобы не писать 50 раз одно и тоже :)

    • admin

      можно

  2. Михаил

    Привет, Евгений!
    Расскажи, пожалуйста, по подробнее, почему в этом уроке была сделана ссылка на krug1 “circle1.clip = krug1;”. а в предыдущем уроке обращались напрямую к krug1 ?

    • admin

      • это вариант короче:
      var circle1 = {};
      circle1.x = krug1.x;
      circle1.y = krug1.y;
      circle1.radius = krug1.width/2;

      • а этот вариант рациональнее
      var circle1 = {};
      circle1.clip = krug1;
      circle1.x = circle1.clip.x;
      circle1.y = circle1.clip.y;
      circle1.radius = circle1.clip.width/2;
      circle1.xmov = 3;
      circle1.ymov = 1;

      Потому что, если ты захочешь поменять название клипа krug1 на какое-либо другое, то во втором варианте – тебе достаточно изменить только 1 слово в коде! А в первом варианте – все места, где упоминается krug1. Кстати, можно сделать было вообще не используя var circle1 = {}, а напрямую krug1, тогда пришлось бы искать все места, где упоминается этот круг в программе, а чем сложнее игра, тем их больше, и вместо того, чтобы искать сотню одинаковых слов, проще создать объект, и указать ссылку на него :) circle1.clip = krug1;

  3. Михаил

    спасибо, Евгений! все понятно)

Добавить комментарий

Ваш 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="">