PDA

Просмотр полной версии : Танк стреляет в мишень: как сделать?


Simeon
07.02.2006, 23:12
Задача следующая: танк; мишень; танк стреляет; при попадании мишень и снаряд исчезает, появляется новая и набираются очки.

Как двигать танк я знаю (присваиваем танку):

< тэгом code надо было пользоваться >

А вот как заставить танк стрелять - тут возникают проблемы:
дополняешь скрипт танка: else if (Key.isDown(38)) {_root.snaryad._x += 5;}, а снаряд "не отрывается" от танка, а только передвигается на 5 точек.

Что нужно дописать в скрипт, чтобы снаряд, оторвавшись от танка летел независимо от него (т.е. не двигался за танком), а, долетая до конца экрана или мишени исчезал и появлялся вновь на дуле танка.

Пока на этом всё. Разберёмся с этим, можно будет переходить к следующим этапам решения задачи.

Небольшое лирическое отступление. Это моё первое сообщение на этом форуме. Перед его созданием, как полагается, воспользовался поиском. Просмотрел почти все сообщения этого раздела форума. Результаты следующие: эмоциональной атмосферой форума недоволен. Просмотрел достаточное количество топиков созданных новичками или, как здесь выражаются, ламерами, и, почти всегда, вместо реальной помощи встречал насмешки, издевательства, так называемых "мастеров", которые выучили несколько команд и теперь думают, что они - круче Билла Гейтса. Модераторы постоянно отсылают к поиску, наверное забыв, что именно этот раздел форума - для новичков, а для многих новичков большой проблемой является не только формулировка вопроса, но и реализация полученных рекомендаций. Поэтому, кстати, и поиск не приносит должных результатов - темы сформулированы так, что невозможно понять о чём они, пока не изучишь (и это нормально!).

Прошу писать только по делу, т.е. предлагать реальную помощь. Такими репликами, типа, "твоя ошибка не в программе, а в том, что ты родился", или "да здесь же делать нечего" или "ты плохо пользуешься поиском" или "Гугол рулит" я уже итак объелся. В конце концов, я никого своими профессиональными терминами, типа "перивентрикулярная лейкомаляция" или "окуло-аурикуло-вертебральная дисплазия" не грузил.

Ещё раз, надеюсь на нормальную помощь от нормальных людей.

MOHCTEP
07.02.2006, 23:56
Как это понимать?дополняешь скрипт танка: else if (Key.isDown(38)) {_root.snaryad._x += 5;}, а снаряд "не отрывается" от танка, а только передвигается на 5 точек.
Вместе с танком чтоли?
"перивентрикулярная лейкомаляция" или "окуло-аурикуло-вертебральная дисплазия"С вами, ей богу, страшно разговаривать...
Вы даже не удосужились правила почитать. а права качаете с ходу. Вежливость то ваша где? Не любите вы модеров - бог с вами, но для пользователей то пользуйте теги...
Что нужно дописать в скрипт, чтобы снаряд, оторвавшись от танка летел независимо от негоНужно а.)убрать из энтерфрейма снаряда привязку к координатам танка.
б.)запустить его в полет, меняя одну лишь координату.

Simeon
08.02.2006, 01:30
MOHCTEP, сделал как вы порекомендовали:

присвоил снаряду:

< тэгом code надо было пользоваться >

Снаряд теперь летит независимо от танка. Однако, нужно, чтобы он появлялся только после нажатия на кнопку "огонь" и вылетал из дулы танка. Я приблизительно понимаю, что это нужно сделать следующим образом (присвоить танку):


< тэгом code надо было пользоваться >


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

Во-вторых, как же тогда сделать, чтобы при своём отправлении снаряд летел от дулы танка? Здесь тоже вроде бы понятно:


< тэгом code надо было пользоваться >


Это только мои догадки (которые на самом деле не работают). Кто знает, как решить задачу, пожалуйста подсткажите.

MOHCTEP
08.02.2006, 02:29
Млин! :))) Я уже, оказывается, здорово отвык от этого стиля программинга..
Теперь по порядку:1 Снаряд двигается вместе с танком, когда тот "заряжен". У вас это получилось. Прекрасно!
2. Снаряд, теперь может лететь независимо от танка. Так? Осталось сделать выстрел.
Предлагаю сделать переменную-флаг, которая будет только в 2-х состояниях: выстрелил - не выстрелил. Если выстрелил, то снаряд независим от танка и наоборот. После попадания в мишень или в "молоко", приделываем снаряд к танку (подготавливаем к следующему выстрелу) и меняем состояние флажка. Естественно меняем его, также и при нажатии на кнопу "огонь". И, наконец, добавим в код движения снаряда отслеживание состояния переменной-флага и соответственно, строим поведение снаряда.
Да, не надо каждый раз грузить клип. Достаточно лишь менять его координаты
Примерно так:
var fire=false;//объявим переменную-флаг в руте
//*******это в танке*********************
onClipEvent (enterFrame) {
if (Key.isDown(39)) {_x += 5;}
else if (Key.isDown(37)) {_x -= 5;}
if (Key.isDown(38)&&!_root.fire) {_root.fire!=_root.fire;}
}
//************Это в снаряд*******************
onClipEvent (enterFrame) {
if(_root.fire){
_x += 5
}else{
_x = _root.tank._x
_y = _root.tank._y}
}

ЗЫ. Какую версию флеша вы юзаете?

Valter
08.02.2006, 03:22
Траблему твою реализовал так вот..

< тэгом code надо было пользоваться >


исходничек погляди

p.s. совет: пробуй писать код на фрейме
p.p.s Флэш-8

Antares
08.02.2006, 03:55
Все листинги, не заключенные в тэг code, были удалены. Это урок злостным нарушителям.

Antares
08.02.2006, 03:57
p.s. совет: пробуй писать код на фрейме

Совет абсолютно верный, только не "на", а "во".

Ekzi
08.02.2006, 10:46
Не помню кто автор, извените

Simeon
09.02.2006, 01:47
MOHCTEP, спасибо за столь исчерпывающий ответ и приободрение, что у меня уже чего-то получилось. Честно говоря, я не очень понял вашу вторую рекомендацию, в которой, по всей видимости, и вся суть, поэтому просто тупо скопировал выложенные вами скрипты, однако, мой танк по-прежнему не стреляет.
Во-первых, я не понял, что такое «var fire=false». Я так понял, что «Fire» - это не имя (Instance name) мувика и не какая-то команда – это произвольно заданное имя, которое потом должно использоваться. Может, я неправильно сделал, что присвоил команду «var fire=false» фрейму?
Что такое «fire!» - это Instance name мувика "снаряд"?
Я пишу так подробно, потому что хочу показать – пусть я многого не знаю, но я готов познавать, работать, экспериментировать и, может не с первого, а с десятого раза я пойму, что и как делать.

Valter, спасибо за исходник, но он не запускается на моей Flash MX 6.0 (код, к сожалению, удалили, поэтому если есть возможность, выложите его ещё раз).

E.x.E., спасибо за исходник. Думаю, он мне пригодится в дальнейшем. А пока, я его открыл, увидел, как классно ездит танк, и ничего не понял в длинном скрипте. Однако, думаю, это дело будущего.

Прикрепляю мой исходник, чтобы была возможность "разговаривать на одном языке"

MOHCTEP
09.02.2006, 03:19
Тут все стреляет. Чуть подправил код. Что сказать? Для начинающего, задумка неплохая, но у вас немного не хватает знаний. Посоветую вам приобрести или скачать книгу по программированию во флэше и хорошенько ее изучить.
Рекомендую "Macromedia Flash MX Создание игр с помощью Action Script" Гэри Розенцвейг. + хороший учебник-справочник по АС.
Ну и желаю вам скорейшего перехода на более новые версии и освоения, опять же, нового стиля программирования.
Удачи.