Суббота, 09 Ноября 2024, 00:49

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Отрисовка траектории
AHTOXA82Дата: Воскресенье, 24 Марта 2013, 22:08 | Сообщение # 1
частый гость
Сейчас нет на сайте
Удивительно, но до сих пор не было таких вопросов. Как нарисовать траекторию баллистического движения тела? Вроде все просто кажется, а когда начинаешь соваться получается не очень весело.
Суть такая, у меня из пушки вылетает ядро (камень, стрела, мяч… все что угодно). Надо нарисовать траекторию движения этого тела, причем сделать это двумя способами:
1) Отрисовка траектории на лету (т.е. ядро летит, а за ним остается след)
2) Отрисовка траектории до выстрела (т.е. я направил пушку под определенным углом, задал скорость и уже пунктиром высвечивается будущая траектория)
Т.е. нужно именно рисовать/отображать траекторию, а не писать код чтобы ядро так двигалось.
Один вариант я все-таки придумал, это использовать частицы. Таким образом можно реализовать первый пункт. Недостаток этого варианта в том, что частицы жрут много памяти. Кроме того, частицы появляются через равные промежутки времени, и когда ядро летит быстро расстояние между точками траектории становиться больше (см. рис). Выглядит это некрасиво. Экспериментировал с формой частиц стало еще хуже.
При реализации первого пункта проблема заключается в следующем. Написать код для траектории вроде несложно:
draw_line(o_jadro.xprevious,o_jadro.yprevious,o_jadro.x,o_jadro.y)
И засунуть его в степ. Т.е. он будет в каждом шаге отрисовывать маленькую черточку, из которых потом будет складываться большая линия. Проблема в том, что когда программа рисует вторую черту первая стирается! Т.е. мой вопрос фактически звучит так: как заставить фигуры, нарисованные в предыдущем шаге стираться не автоматически, а когда я этого захочу?
Что касается второго пункта (это где надо заранее знать, как будет двигаться объект), то тут вообще у меня версий нет. Я хорошо знаю физику и математику, знаю баллистику, знаю как будет двигаться ядро и от чего зависит его полет. Но как все это нарисовать?! В гейм мейкер нет функции отрисовки математических функций. Здесь нельзя нарисовать параболу или гиперболу. Как же быть?
Не работал ранее с путями, хотел как-то присобачить функцию
draw_path(path,x,y,absolute)
Первый пункт с ней сделать не получится точно, поскольку тут надо заранее знать траекторию. А второй можно еще подумать.
Также не работал с сурфейсами (вообще не очень пока понимаю что это такое) может они как-то помогут? Хотя из того, что понял из справки не особо они помогут.
Вот такие проблемы у меня. Подсказываейте.
не разобрался как картинки вставлять: http://zalil.ru/34377741


Сообщение отредактировал AHTOXA82 - Воскресенье, 24 Марта 2013, 22:13
SaladinДата: Воскресенье, 24 Марта 2013, 23:22 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
Цитата (AHTOXA82)
нельзя нарисовать параболу или гиперболу

Почему же нельзя? draw_path вполне может нарисовать. Рассчитываешь результат функции через определённые отрезки и добавляешь его в путь. Например через каждые 100 пикселей по оси х высчитываешь координату у, результат ху добавляешь в путь (path_add_point или как то так, не помню), после того как путь просчитан до нужной координаты - отрисовываешь путь. Все.


Анбаннэд. Хэлоу эгин =)
LetsOffBrainsДата: Понедельник, 25 Марта 2013, 01:16 | Сообщение # 3
Project SoRDeLKa
Сейчас нет на сайте
Ляпну кое-чего.
Сам снаряд движется по некой формуле.


Точки полета вычисляются по формуле

Ставим кучность и количество точек побольше и соединяем точки линиями. Чем больше точек и кучность, тем более плавно будет проходить путь.

Добавлено (25.03.2013, 01:16)
---------------------------------------------
Перечитал пост.
Идеально красиво не сделать, нужно максимально приблизиться к желаемому результату.
На счет отрисовки в ГМС толком ничего сказать не могу, но может подойдет мой вариант хранения точек в массиве. Двумерный или одномерный без разницы.
Почему нельзя знать траекторию? Не понимаю.





Сообщение отредактировал LetsOffBrains - Понедельник, 25 Марта 2013, 01:11
SaladinДата: Понедельник, 25 Марта 2013, 13:22 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
LetsOffBrains, отличная заготовка, вангую наплыв казуалок на гамаке.

Анбаннэд. Хэлоу эгин =)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг