суббота, 6 октября 2012 г.

Урок 9. Метод hitTest. Определение столкновений.Часть 2

Итак продолжим изучать hitTest. На этом уроке мы будем использовать метод hitTestPoint для определения столкновения нашего персонажа с фигурами абсолютно любой формы. По окончании урока мы создадим такую флешку:


P.S.: Всю графику во флешке я тупо стырил из пака со спрайтами из разных игр, если что)))

Подготовка флешки.

1. Создадим главного героя:
            a) Дадим ему имя hero.

            b) Внутри мувика с персонажем вокруг него расставим 16 маркеров (это обычные мувиклипы с именами от p1 до p16). С помощью этих маркеров мы будем определять столкновение персонажа со стеной.


2. Создадим графическую часть уровня.
Тут всё просто. Создаём отделный слой, и рисуем всё, что душе угодно.


3. Создаём стены в которые будем врезаться.
Создаём новый слой и просто рисуем что угодно, и чем угодно в том месте в котором вам нужно, что бы игрок врезался.

Выделяем всё стены и делаем их одним мувиком с именем wall.

Подготовка закончена! Приступим к коду.

Написание кода

Создаём новый слой и называем его AS.

stage.addEventListener(Event.ENTER_FRAME,updateF);//слушатель событий;
wall.visible = false;//делаем нашу стену невидимой
function updateF(e:Event):void
{
 for (var i:int=1; i<17; i++)
 {
  if ((wall.hitTestPoint(hero["p"+i].x+hero.x,hero["p"+i].y+hero.y,true)))//проверка на столкновение каждого маркера со стеной
  {
   var ugol = Math.atan2(hero["p" + i].y,hero["p" + i].x);
   for (var i2:int=1; i2<30; i2++)
   {
    hero.x -=  0.3 * Math.cos(ugol);//отталкивание от стены
    hero.y -=  0.3 * Math.sin(ugol);//отталкивание от стены
    if ((wall.hitTestPoint(hero["p"+i].x+hero.x,hero["p"+i].y+hero.y,true)==false))//если персонаж не соприкасается со стеной
    {
     break;//то выйти из цикла
    }
   }
  }
 }
}
Вот и всё! Исходник

11 комментариев:

  1. Smitg9 мне нужно с вами проконсультироваться. Куда вам можно написать письмо? dim_ok_23@mail.ru

    ОтветитьУдалить
  2. Спасибо за уроки! Мне, как новичку, они очень интересны!
    Скажите, как можно с Вами связаться для консультаций?
    Хотелось бы задать вопросы по моему коду.
    Спасибо заранее!

    ОтветитьУдалить
  3. вау, круто! спасибо большое! давно искал такое простое разъяснение для столкновения кривых фигур.

    ОтветитьУдалить
  4. Спасибо тебе ОГРОМНОЕ за этот урок!!! У меня нет слов, никак не получалось найти подобный код, и вот! Это просто супер блог!!!))))

    ОтветитьУдалить
  5. В скайп anastasia270273 напишите - по делу.

    ОтветитьУдалить
  6. блин 425mb слишком много, а есь проги по меньше хотяб 50mb а то с моим инетом это вобще плохо получается, я пока просто уроки читал но мне кажется этот язык програмирование не сложнее чем CSS, HTML и JavaScript я занимался этим давненько но наскучило, думаю эти игры делать не сложнее только вот 400 метров это реально не подъемный вес для меня((( и это я еще в школе учусь но в некоторых языках програмирования разабрался

    ОтветитьУдалить
    Ответы
    1. гораздо сложнее чем CSS или HTML. В AS команд наверное раз в 50 больше чем в CSS+HTML вместе взятых

      Удалить
  7. При том что CSS и HTML не языки программирования.
    А в as3 нет команд, только объекты и методы.

    ОтветитьУдалить
  8. Этот комментарий был удален автором.

    ОтветитьУдалить