![]() |
|
||||||||||
|
|||||
|
Регистрация: Dec 2010
Сообщений: 12
|
Разрабатываю онлайн шутер с видом сбоку.
Вместо игрока двигаю уровень, изначально делаю var halfWidth = level.width / 2 - gameStage.stageWidth/2; var halfHeight = level.height / 2 + 450; level.x = halfWidth - player.x; level.y = halfHeight - player.y; Проблема в том что не совсем понимаю как правильно задавать координаты для игроков-противников, естественно у этих игроков перемещение происходит точно таким же образом. Подскажите пожалуйста "формулу" для перемещения противников. |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 12
|
А можно по-подробнее, для дурака.
Как я понял вы предлагаете создать уровень в который положить(addChild) все кроме игрока, верно? |
|
|||||
|
strange mood
|
Я предлагаю, например, все рассчеты проводить с координатами внутри уровня, а затем при отрисовке преобразовывать их в экранные координаты.
В упрощённом смысле это значит сначала двигать всё внутри уровня, а потом сдвигать сам уровень вместе со всем содержимым. Разумеется, я не призываю дословно так манипулировать спрайтами, иначе флэш загнётся от тормозов Но надеюсь суть ясна.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
Эм, GAIKER, а я не то же сказал?
nucleartux, для вас: мы имеем два спрайта - игрок и контейнер. Контейнер снизу, игрок сверху, полнейшая гармония. В контейнере у нас находится все и вся, кроме игрока, игрок-то у нас лежит на контейнере сверху. Игрок ходит (хотя стоит на месте) - весь контейнер со всееем содержимым перемещается относительно игрока.
__________________
тут я |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 12
|
Тут возникает сложности с выстрелом, например. Т.е. взаимодействуют объекты на разных уровнях иерархии.
ЗЫ а вот перемещение противников и игрока получилось совсем просто сделать ) |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 12
|
Ну вот у меня есть функция isInLineOfSight(obj1, obj2), определяет находятся ли объекты в зоне видомости.
Как ее переделать если какой-то из объектов является чилдом уровня, а другой stage'а? Т.е. есть у меня var dx = (player.x + player.hitZone.x - (target.x + target.hitZone.x))/10; player child от stage, target от level. Необходимо провести прямую из точки игрока до точки цели, как это сделать? Последний раз редактировалось nucleartux; 18.12.2010 в 00:39. |
|
|||||
|
Цитата:
__________________
тут я |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 12
|
Все оказалось очень просто
var p:Point = level.globalToLocal(new Point(player.x,player.y)); и теперь пишем вместо player.x и player.y p.x и p.y соответственно. |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:41. |
|
|
« Предыдущая тема | Следующая тема » |
|
|