Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » 2D алгоритмы движения | страница 1
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 1 из 1
 
Поиск в этой теме:
Канал Игры Мечты: «2D алгоритмы движения»
Shajirr
 200 EGP


Репутация: 5
Сообщения: 1068
Откуда: TTallllinn
Зарегистрирован: 11.03.2007
Пытаюсь сделать простой движок для игры с видом сверху вниз.

Главная идея в том, что в физической модели нет "киселя", т.е. тело, к которому не применяются никакие силы, движется с постоянной скоростью.

В рассчетах используются вектора, у каждого вектора есть 2 координаты.

Понятия:
location - местоположение - вектор
velocity - скорость - вектор
acceleration - ускорение - вектор
thrust - тяга - скаляр

В упрощенном виде рассчет положения тела такой:

//часть кода для объектов, имеющих двигатель
direction = new Vector (mouse.x, mouse.y)
тут присваиваем вектор направления ускорения, либо связан с положением мыши напрямую, как в данном случае, либо через какой-либо алгоритм;

direction.normalize(); - нормализуем вектор, чтобы его можно было использовать как базовый множитель в след. операции

тут блок по ограничению величины тяги двигателя

direction.mult(thrust); - умножаем модуль вектора на величину тяги двигателя

acceleration = direction; - теперь рассчитанный верктор можно присвоить вектору ускорения объекта

//эта часть одинаковая у всех объектов
velocity.add(acceleration); - прибавляем ускорение к скорости
location.add(velocity); - прибавляем скорость к местоположению объекта
__________________________

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

Задача #1
Как организовать изменение направления движения при сохранении постоянной линейной скорости объекта?

Задача #2
Как сделать возможным вращение по круговой орбите вокруг заданной точки с постоянной угловой скоростью?

При этом оперировать мы можем только ускорением.

На данный момент, если вектор направления напрямую задается координатами мыши, т.е. вектор ускорения всегда направлен в центр вращения, то объект просто вращается вокруг курсора по эллиптической орбите.

Последний раз редактировалось: Shajirr (12:43 24-03-2011), всего редактировалось 3 раз(а)
    Добавлено: 12:40 24-03-2011   
Канал Игры Мечты: «2D алгоритмы движения»
 
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Народ, поделитесь травой, а то я в КСО стал себя как-то неуверенно чувствовать... (Demon Ru)

  » 2D алгоритмы движения | страница 1
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18