Алгоритм визуализации песочных часов - PullRequest
2 голосов
/ 09 декабря 2010

Как я могу запрограммировать поведение песочных часов (похожее на изображение) для моей игры?

alt text

Должен ли я сделать что-то вроде гравитации и обработать каждую песчинку?

А как насчет цифровых песочных часов (как на этих часах)?alt text

Ответы [ 4 ]

5 голосов
/ 09 декабря 2010

Тратить усилия на «правильную» имитацию песчинок ради песочных часов в игре - это серьезная чрезмерная инженерия.

Заставьте художника создать высококачественную анимацию и отрендерите ее.как серия статических изображений или как фильм.

Серьезно, не имитируйте песок.

3 голосов
/ 09 декабря 2010

Тангенциально, вы можете моделировать падающий песок с клеточными автоматами .Я бы не подумал использовать его для симуляции песочных часов, но в принципе он мог бы работать довольно хорошо и был бы забавным проектом.

Глядя на ваши цифровые песочные часы - либо зерна движутся по заданным схемам, либо может использовать что-то вроде этого CA.

1 голос
/ 09 декабря 2010

Я буду играть здесь адвоката дьявола и предположить, что вы действительно хотите смоделировать песок в своей игре, а не просто создать простой индикатор загрузки песочных часов (как люди говорили, что это пустая трата усилий).

ИтакЯ возвращаюсь к своему первоначальному комментарию.Какое разрешение вы ищете?

Скорее всего, вам не нужно имитировать каждую гранулу песка.Так что будьте проще и оставьте физику в стороне и просто смоделируйте эффект.

Например, на макушке головы вы можете использовать 3 простых правила: Гравитация: Если пиксельниже "песчаного пикселя" находится пустой сдвиг этого столбца вниз.

Cave In: Если между двумя столбцами "песчаных пикселей" есть пустое пространство, заполните его, если пространство под нимне пусто (т. е. не падает)

Pile Up: , если рядом с колонкой «пикселей песка» есть пустое пространство, разложите его, если пространство под ним не пустое.

Это лишь некоторые примеры правил, которые могут работать.Суть в том, чтобы поэкспериментировать, чтобы придумать симуляцию, которая даст желаемый эффект.Обычно это менее трудоемкий и интенсивный процессор, чем моделирование физики.

1 голос
/ 09 декабря 2010

Моделируя это, сделав удочку для своей спины, вам лучше просто нарисовать кадры от руки и воспроизвести их.

Но - если математика - ваша вещь, вы могли бы:

  • определите объем песка в верхней части.
  • определить скорость объемного потока через шею (оставьте это произвольным, так как вы захотите настроить его).
  • в любой момент времени вы можете использовать скорость потока, чтобы определить, сколько песка покинуло верх.
  • если вы знаете форму верхнего сосуда, вы можете определить текущую высоту песка, учитывая текущий объем песка.
  • Если вы знаете форму дна сосуда, вы можете определить текущую высоту песка, учитывая объем песка, который протекает через горловину.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...