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

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

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

Регистрация: Dec 2010
Сообщений: 12
Question 2D-шутер: положение противников

Разрабатываю онлайн шутер с видом сбоку.
Вместо игрока двигаю уровень, изначально делаю
Код AS3:
var halfWidth = level.width / 2 - gameStage.stageWidth/2;
var halfHeight = level.height / 2 + 450;
level.x = halfWidth - player.x;
level.y = halfHeight - player.y;
и потом для перемещения
Код AS3:
level.x -= dx;
level.y -= dy;
Проблема в том что не совсем понимаю как правильно задавать координаты для игроков-противников, естественно у этих игроков перемещение происходит точно таким же образом.
Подскажите пожалуйста "формулу" для перемещения противников.

Старый 17.12.2010, 22:56
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 2  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Сделайте level контейнером, в который будете добавлять абсолютно все, игрока положите сверху, он же всегда в центре, верно? И двигайте только контейнер.
__________________
тут я

Старый 17.12.2010, 23:05
nucleartux вне форума Посмотреть профиль Отправить личное сообщение для nucleartux Найти все сообщения от nucleartux
  № 3  
Ответить с цитированием
nucleartux

Регистрация: Dec 2010
Сообщений: 12
А можно по-подробнее, для дурака.
Как я понял вы предлагаете создать уровень в который положить(addChild) все кроме игрока, верно?

Старый 17.12.2010, 23:37
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 4  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Я предлагаю, например, все рассчеты проводить с координатами внутри уровня, а затем при отрисовке преобразовывать их в экранные координаты.
В упрощённом смысле это значит сначала двигать всё внутри уровня, а потом сдвигать сам уровень вместе со всем содержимым. Разумеется, я не призываю дословно так манипулировать спрайтами, иначе флэш загнётся от тормозов Но надеюсь суть ясна.
__________________
тонкий тролль, осеянный благодатью

Старый 17.12.2010, 23:44
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 5  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Эм, GAIKER, а я не то же сказал?
nucleartux, для вас: мы имеем два спрайта - игрок и контейнер. Контейнер снизу, игрок сверху, полнейшая гармония. В контейнере у нас находится все и вся, кроме игрока, игрок-то у нас лежит на контейнере сверху. Игрок ходит (хотя стоит на месте) - весь контейнер со всееем содержимым перемещается относительно игрока.
__________________
тут я

Старый 17.12.2010, 23:53
nucleartux вне форума Посмотреть профиль Отправить личное сообщение для nucleartux Найти все сообщения от nucleartux
  № 6  
Ответить с цитированием
nucleartux

Регистрация: Dec 2010
Сообщений: 12
Тут возникает сложности с выстрелом, например. Т.е. взаимодействуют объекты на разных уровнях иерархии.
ЗЫ а вот перемещение противников и игрока получилось совсем просто сделать )

Старый 17.12.2010, 23:57
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 7  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Что мешает определять, где относительно контейнера стоит игрок, и создавать пулю в этом месте в контейнере?
__________________
тут я

Старый 18.12.2010, 00:03
nucleartux вне форума Посмотреть профиль Отправить личное сообщение для nucleartux Найти все сообщения от nucleartux
  № 8  
Ответить с цитированием
nucleartux

Регистрация: 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.
Старый 18.12.2010, 00:45
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 9  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Цитата:
какой-то из объектов является чилдом уровня, а другой stage'а?
Так никто не будет на стейдже. Все в контейнере. Или вы про игрока? Его координаты нужно переводить в координаты контейнера (как это сделать, к сожалению, я никогда не понимал, но знаю, что нужно globalToLocal использовать).
__________________
тут я

Старый 18.12.2010, 16:31
nucleartux вне форума Посмотреть профиль Отправить личное сообщение для nucleartux Найти все сообщения от nucleartux
  № 10  
Ответить с цитированием
nucleartux

Регистрация: Dec 2010
Сообщений: 12
Все оказалось очень просто
var p:Point = level.globalToLocal(new Point(player.x,player.y));
и теперь пишем вместо player.x и player.y p.x и p.y соответственно.

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

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

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


 


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


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