Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.12.2009, 12:43
23an0mal1a1989 вне форума Посмотреть профиль Отправить личное сообщение для 23an0mal1a1989 Найти все сообщения от 23an0mal1a1989
  № 1  
Ответить с цитированием
23an0mal1a1989

Регистрация: Oct 2009
Сообщений: 6
По умолчанию space invaders

Здравствуйте...прошу помощи вот в таком деле - надо написать игрушку по типу space invaders...
я сделала передвижение корабля внизу экрана кнопками -> <-, корабль умеет стрелять пробелом (там использую мувик летящей пули) + сделала чтоб пришельцы из стороны в сторону шатались...

теперь у меня никак не получается сделать чтоб умирали пришельцы...
Я вот тут пробую вот так...но не получается (((
Код AS1/AS2:
for (i=1; i<=45; i++)
{
    if (_root["newclip"+level].hitTest(_root["vrag"+i]))
    {
        removeMovieClip(_root["vrag"+i]);
    }
}
это цикл по пришельцам, он написан там, где события нажатия пробела...т.е когда добавляется новая пуля _root["newclip"+level]...

может я не там пишу это все...или не так понимаю смысл фукции hitTest?

та же самая проблема у меня теперь с кораблем...я сделала чтоб пришельцы в него стреляли...а вот сделать чтоб он исчезал при попадании не получается(((
там у меня если пришло время пришельцу стрелять - он стреляет и дальше проверяется перекрывает ли пуля корабль... и если да, то корабль скрывается...пока так...хотя там должно быть чтобы корабль взрывался _root.korabl.gotoAndPlay(2);
но все равно не работает....очень прошу помощи


Последний раз редактировалось 23an0mal1a1989; 08.12.2009 в 00:17.
Старый 06.12.2009, 13:28
NoCD вне форума Посмотреть профиль Отправить личное сообщение для NoCD Найти все сообщения от NoCD
  № 2  
Ответить с цитированием
NoCD
 
Аватар для NoCD

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
Зачем вам сцены в такой игре???
Сцены в flash8 криво работают. Да и не нужны они особо.

В играх, где требуется быстрый обсчет позиций мувиков, особенно пересечение двух мувиков лучше использовать математику.

hitTest в основном годится для mouse и для медленных событий
вкратце:

Код AS1/AS2:
 
 
Пуля.onEnterFrame = ПолётПули;
 
function ПолётПули(){
Пуля._x += скорость пули относительно x;
Пуля._y += скорость пули относительно y;
 
var dx = Пуля._x - Враг._x;
var dy = Пуля._y - Враг._y;
var dist = Math.sqrt(dx*dy+dy*dy);
 
if(dist < 10) {
trace("Есть контакт");
Обсчёт_Здорровья_врага();
или сразу
removeMovieClip(Удалить врага);
//--------
removeMovieClip(Удалить пулю);
delete this.onEnterFrame;
}
}


Последний раз редактировалось NoCD; 06.12.2009 в 13:34.
Старый 06.12.2009, 15:20
23an0mal1a1989 вне форума Посмотреть профиль Отправить личное сообщение для 23an0mal1a1989 Найти все сообщения от 23an0mal1a1989
  № 3  
Ответить с цитированием
23an0mal1a1989

Регистрация: Oct 2009
Сообщений: 6
NoCD, спасибо огромное за помощь и советы...уже очень долго с этим бьюсь и как выяснилось не так действую(((
что-то начало получатся когда я как Вы сказалт написала
все у меня написано во втором фрейме летящей пули, т.е в том месте где она только начинает лететь...у меня там вставлен твин...т.е. во втором фрейме пуля стоит внизу, а в 33 вверху...я вот думаю может это лишнее...ведь в том скрипте, который вы написали пуля и так летит...вот я попробовала просто символ сделать и в нем в первом и последнем его фрейме написала этот код...и вообще все перестало стрелять(((
работает странно пуля почемуто убивает только одного пришельца...пришем он не удаляется со сцены...а если срабатывает трэйс, то удаляются безвозвратно сразу несколько....ничего словом не понимаю(((((

Добавлено через 24 минуты
забыла сказать пришельцы в моей игрушке непрерывно двигаются туда-сюда...может из-за этого пуля летит в одном месте, а пришелец умирает совершенно в другом?
попробовала сделать чтоб пришельцы убивали корабль...работает...только не хорошо:
1. корабль почемуто не умирает до конца, не удаляется со сцены(((
2. пуля никак не хочет попадать в корабль...я уже дистанцию до 30 увеличила...а всеравно работает через раз(((

очень прошу, помогите разобраться...


Последний раз редактировалось 23an0mal1a1989; 08.12.2009 в 00:20.
Старый 06.12.2009, 17:31
NoCD вне форума Посмотреть профиль Отправить личное сообщение для NoCD Найти все сообщения от NoCD
  № 4  
Ответить с цитированием
NoCD
 
Аватар для NoCD

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
У меня в том коде были ошибки.
сделал набросок, может не то что вы делаете, но думаю это поможет.

управление: кнопки left / right , mouse, fire - левая кнопка мыши
Вложения
Тип файла: zip game.zip (6.8 Кб, 51 просмотров)

Старый 07.12.2009, 00:20
23an0mal1a1989 вне форума Посмотреть профиль Отправить личное сообщение для 23an0mal1a1989 Найти все сообщения от 23an0mal1a1989
  № 5  
Ответить с цитированием
23an0mal1a1989

Регистрация: Oct 2009
Сообщений: 6
NoCD, спасибо Вам огромнейшее...Вы просто не представляете как Вы меня выручили и как мне помогли...я очень Вам благодарна...я даже не ожидала такой глобальной помощи...
я начала переделывать под то, что мне нужно и образовалось 2 небольших вопроса...(извиняюсь за наглость)
не нашла как прикрепить файл...вопросы такие...
у меня почему-то не стреляют пришельцы...точнее они пытаются стрелять...но у меня там какая-то ошибка (может с depth?) и совсем не вызывается функция, двигающая пулю прищельца eng_bullet_vr() (это я трейсом проверила)...

а второе - я нарисовала динамический текст на поле, а он у меня не хочет выводиться...счет в программе прибавляется как надо, но не выводится(((


еще раз огромное спасибо Вам за помощь...Вы так много для меня сделали....

Добавлено через 12 минут
извините извините извините извините....я редиска....просмотрела очевидную ошибку...вот так стреляет...только попадание очень плохо отслеживается...пришлось увеличить там dist<60....это нормально?...а то меня это немного смущает...

но определился еще вопрос глупый наверно...а как закончить игру, если корабль убили?...удалить весь основной клип и прикрепить надпись?
Добавлено через 23 минуты
еще раз извиняюсь)...и счет у меня выводится...и все хорошо...только вот с дистанцией<60...скажите, пожалуйста...это нормально?


Последний раз редактировалось 23an0mal1a1989; 08.12.2009 в 00:16.
Старый 07.12.2009, 02:00
NoCD вне форума Посмотреть профиль Отправить личное сообщение для NoCD Найти все сообщения от NoCD
  № 6  
Ответить с цитированием
NoCD
 
Аватар для NoCD

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
Ну раз на все вопросы вы сами ответили, то отвечу только на этот.
Цитата:
еще раз извиняюсь)...и счет у меня выводится...и все хорошо...только вот с дистанцией<60...скажите, пожалуйста...это нормально?
дистанция 60 пикселей, это радиус окружности, вокруг вашего объекта или вокруг мувика врага. Если в радиус 60 пикселей вмещается весь объект, это нормально, да если даже радиус чуть больше чем сам мувик, ничего страшного нет. Если радиус меньше, а мувик больше, то просто не во всех местах мувика будут фиксироваться попадания.

Старый 07.12.2009, 11:32
Chuck607 вне форума Посмотреть профиль Отправить личное сообщение для Chuck607 Найти все сообщения от Chuck607
  № 7  
Ответить с цитированием
Chuck607

Регистрация: Nov 2009
Сообщений: 40
А у меня такой вопрос, что больше кушает ресурсы hitTest () или просчитывание дистанции?

Старый 07.12.2009, 13:55
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 8  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
По уму, hitTest внутри должен работать так, что сначала проверяется пересечение по координатам, а потом по содержимому. Как сделано во Flash на самом деле - не знаю.

Просчитывание дистанции в любом случае быстрее, без вариантов.

Старый 07.12.2009, 15:06
Chuck607 вне форума Посмотреть профиль Отправить личное сообщение для Chuck607 Найти все сообщения от Chuck607
  № 9  
Ответить с цитированием
Chuck607

Регистрация: Nov 2009
Сообщений: 40
хм... так выходит в играх, например на пересечение объекта с пулей всяко лучше прописать дистанцией чем hitTest`ом ?

Старый 07.12.2009, 15:22
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 10  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Да. Hittest нужен только для очень точного определения попадания в объект очень сложной формы. Для остальных случаев достаточно проверки с попаданием координат пули в один или несколько прямоугольников или кругов, которые грубо повторяют форму объекта.

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:47.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 03:47.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.