Game Maker - создание игр | HellRoom Games
Ноябрь 18, 2025, 04:25:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Движение по овалу.  (Прочитано 19832 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Hamster099
«Старожил форума»
******

Репутация: 164
Offline Offline

Награды:
1000 сообщений!За постоянность! [100 дней на форуме]За лояльность! [+150 репутации]
API: GameMaker Studio Master
Сообщений: 1264



« Ответ #15 : Май 09, 2011, 22:57:53 »

Итак, выкладываю всё что насобирал за это время в примере.
Там все пояснения по ходу дела. Суть - нижняя часть должна работать как верхняя. Часть 4 неработает, нужно придумать 2 формулы вычисления угла и расстояния

p.s.: всё это дело разрабатывалось путём жутких мысленных усилий, если ктото захочет использовать код в своих целях-пожалуйста, но укажите хотябы автора

* orbit_test.gmk (13.03 Кб - загружено 515 раз.)
Записан
OverBoy
GM Pro user
*

Репутация: 130
Offline Offline

Пол: Мужской
Награды:
За постоянность! [100 дней на форуме]За победу в новогоднем конкурсе [месяц тематических игр - 2012] (1 место)
API: Game Maker 8.0 Pro
Сообщений: 448



WWW
« Ответ #16 : Май 09, 2011, 23:15:02 »

а почему у тебя G=6.67 , должно быть 6,67*10 в -11 степени.
Записан

Hamster099
«Старожил форума»
******

Репутация: 164
Offline Offline

Награды:
1000 сообщений!За постоянность! [100 дней на форуме]За лояльность! [+150 репутации]
API: GameMaker Studio Master
Сообщений: 1264



« Ответ #17 : Май 09, 2011, 23:55:59 »

масса планеты тоже не 20 килограмм  
там всё сокращается, получается в таком виде.
листок с рассчётами гдето закинул, но можеш поверить мне на слово
Записан
Hummer
scio me nihil scire
GM Pro user
*

Репутация: 335
Offline Offline

Пол: Мужской
Награды:
2000 сообщений!За постоянность! [100 дней на форуме]За лояльность! [+300 репутации]Знаток Game Maker!За помощь новичкам!
API: Game Maker 8.0 Pro
Деятельность: GML, С++, OpenGL, Java. Бывший Директор бывшей школы GML
Сообщений: 2573


« Ответ #18 : Май 10, 2011, 06:04:56 »

Так. Ты сказал, что у нас есть координаты 2 фокусов. Первый я понял ("Солнце"), а второй.

Добавлено: Май 10, 2011, 06:21:27
http://www.gamedev.ru/code/forum/?id=67363
вот ещё статейка, может поможет
Записан

Есть вещи, которые нельзя объяснить. Для всего остального есть Справка
Рандом-рандом-рандомище (с)

C++ & OpenGL
Hamster099
«Старожил форума»
******

Репутация: 164
Offline Offline

Награды:
1000 сообщений!За постоянность! [100 дней на форуме]За лояльность! [+150 репутации]
API: GameMaker Studio Master
Сообщений: 1264



« Ответ #19 : Май 10, 2011, 10:50:42 »

второй можно вычислить, если есть полуоси и угол. либо задавать непосредственно, что наверное будет даже лучше


Добавлено: Май 10, 2011, 13:08:12
добавил правильный рассчёт положения. Осталось придумать как считать угловую скорость  :(

* orbit_test.gmk (13.14 Кб - загружено 460 раз.)
Записан
OverBoy
GM Pro user
*

Репутация: 130
Offline Offline

Пол: Мужской
Награды:
За постоянность! [100 дней на форуме]За победу в новогоднем конкурсе [месяц тематических игр - 2012] (1 место)
API: Game Maker 8.0 Pro
Сообщений: 448



WWW
« Ответ #20 : Май 10, 2011, 18:54:39 »

могу сказать формулу для нахождения угловой скорости:
W=2pi/T
W=v/R
Т=период
v=линейная скорость
может пригодится
Записан

Hamster099
«Старожил форума»
******

Репутация: 164
Offline Offline

Награды:
1000 сообщений!За постоянность! [100 дней на форуме]За лояльность! [+150 репутации]
API: GameMaker Studio Master
Сообщений: 1264



« Ответ #21 : Май 10, 2011, 19:59:41 »

это из центра эллипса или из фокуса? мне нужен фокус whistling

Добавлено: Май 10, 2011, 22:08:19
Итак, у меня есть значение линейной скорости для любой точки на эллипсе, длина окружности эллипса, и все необходимые данные по эллипсу (вроде полуосей , эксцентриситетов и тд.). Нужно найти угол, на который поворачивать объект каждый шаг. Какие будут идеи?  

В теории скорость движения это отрезок небольшой на эллипсе, нужно его както посчитать его от точки текущего положения и найти следующую точку, тогда угол нужный будет=угол старый-поинт_дирекшн до новой точки  
хотя если каким-то образом продвинуться до новой точки то угол уже небудет нужен :o както всё сильно запутано

Поидее можно через треугольник, если знаем все 3 стороны найти угол, но это имхо неочень точно
Записан
Dva_Kota
Гл. Администратор
*

Репутация: 636
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]За лояльность! [+500 репутации]Настоящий игродел!Тру Админ :D1 место за игру: Energy Wars (Конкурс Золотые Руки)...
API: GameMaker Studio Standard
Сообщений: 3245



« Ответ #22 : Февраль 16, 2012, 12:17:15 »

Еще один пример движения:

* rotate_2.gmk (11.14 Кб - загружено 478 раз.)
Записан

Sky Rider
Активный участник
*****

Репутация: 70
Offline Offline

Пол: Мужской
Награды:
За постоянность! [10 дней на форуме]
API: Love
Деятельность: Lua, Python
Сообщений: 323


« Ответ #23 : Февраль 18, 2012, 22:10:09 »

Hamster099
Вам нужно найти угловую скорость кометы относительно планеты, я правильно понял? Тогда вам нужно что-то вроде этого:
В create
Код:
old_dir = point_direction(planet.x,planet.y,comet.x,comet.y) //переменная направления в прошлом шаге.
//чтобы в 1-м шаге не было ошибки, для начала присваиваем текущее значение направления.
В step:
Код:
dir = point_direction(planet.x,planet.y,comet.x,comet.y)
angular_velocity = dir - old_dir //угловая скорость
//здесь ещё какие-то формулы, которые используют old_dir (если таковые есть)
old_dir = dir //обновляем old_dir для следующего шага

Добавлено: Февраль 18, 2012, 23:09:48
Hamster099
Глянул ваш пример. Может, я чего-то не понимаю, но разве нельзя было сделать проще? (см. вложения)
Если я сделал глупость, прошу не ругать сильно

* Орбита.gmk (15.36 Кб - загружено 447 раз.)
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.1 секунд. Запросов: 31.