![]() |
2D-шутер: положение противников
Разрабатываю онлайн шутер с видом сбоку.
Вместо игрока двигаю уровень, изначально делаю Код AS3:
Код AS3:
Подскажите пожалуйста "формулу" для перемещения противников. |
Сделайте level контейнером, в который будете добавлять абсолютно все, игрока положите сверху, он же всегда в центре, верно? И двигайте только контейнер.
|
А можно по-подробнее, для дурака.
Как я понял вы предлагаете создать уровень в который положить(addChild) все кроме игрока, верно? |
Я предлагаю, например, все рассчеты проводить с координатами внутри уровня, а затем при отрисовке преобразовывать их в экранные координаты.
В упрощённом смысле это значит сначала двигать всё внутри уровня, а потом сдвигать сам уровень вместе со всем содержимым. Разумеется, я не призываю дословно так манипулировать спрайтами, иначе флэш загнётся от тормозов :) Но надеюсь суть ясна. |
Эм, GAIKER, а я не то же сказал?
nucleartux, для вас: мы имеем два спрайта - игрок и контейнер. Контейнер снизу, игрок сверху, полнейшая гармония. В контейнере у нас находится все и вся, кроме игрока, игрок-то у нас лежит на контейнере сверху. Игрок ходит (хотя стоит на месте) - весь контейнер со всееем содержимым перемещается относительно игрока. |
Тут возникает сложности с выстрелом, например. Т.е. взаимодействуют объекты на разных уровнях иерархии.
ЗЫ а вот перемещение противников и игрока получилось совсем просто сделать ) |
Что мешает определять, где относительно контейнера стоит игрок, и создавать пулю в этом месте в контейнере?
|
Ну вот у меня есть функция isInLineOfSight(obj1, obj2), определяет находятся ли объекты в зоне видомости.
Как ее переделать если какой-то из объектов является чилдом уровня, а другой stage'а? Т.е. есть у меня var dx = (player.x + player.hitZone.x - (target.x + target.hitZone.x))/10; player child от stage, target от level. Необходимо провести прямую из точки игрока до точки цели, как это сделать? |
Цитата:
|
Все оказалось очень просто
var p:Point = level.globalToLocal(new Point(player.x,player.y)); и теперь пишем вместо player.x и player.y p.x и p.y соответственно. |
| Часовой пояс GMT +4, время: 23:10. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.